Datatable.Selectメソッドの検索条件に変数を使いたい

タグの編集
投稿者 yatuka  (学生) 投稿日時 2010/6/22 23:56:04
初めまして。
ふとプログラムに興味を持ち、手始めにでDatatableの中身を検索し表示する
プログラムを作ろうとしています。

Datatable.Selectの検索条件に変数を使うことはできませんでしょうか。
以下のようにコードを書いた場合はうまく動くのですが、


        'テーブルの作成・列の定義
        Dim Testdatatable As DataTable = New DataTable

        Testdatatable.Columns.Add("GoodsName")
        Testdatatable.Columns.Add("GoodsNumber")


        '行の追加
        Dim TestNewrow As DataRow = Testdatatable.NewRow

        TestNewrow("GoodsName") = "test"
        TestNewrow("GoodsNumber") = "12345"
        Testdatatable.Rows.Add(TestNewrow)


        '検索・商品名の表示
        Dim Search() As DataRow = Testdatatable.Select("goodsNumber = 12345")
        MsgBox(Search(0).Item("goodsname"))


一番下の部分をこのように書き換えると「列[hensuu]が見つかりません」とのエラーが出てしまい動きません。


        '検索・商品名の表示
        Dim hensuu As String = "12345"

        Dim Search() As DataRow = Testdatatable.Select("goodsNumber = hensuu")
        MsgBox(Search(0).Item("goodsname"))


変数を使って検索できるようにしたいのですが、その方法がMSDN等を読んでもどうしても分かりません。
良い方法がありましたらご教示頂ければ幸いです。
投稿者 YuO  (社会人) 投稿日時 2010/6/23 00:48:27
DataTable.Selectは残念ながら文字列でのみfilterExpressionを受け付けます。
このため,
Dim Search() As DataRow = Testdatatable.Select("goodsNumber = " & hensuu)
のように,文字列演算で条件式を作ってください。
投稿者 yatuka  (学生) 投稿日時 2010/6/23 02:45:29
ご回答ありがとうございます。
お陰様で無事意図したとおりに動作させることができました。制作を進めると共に
文字列演算についても勉強しようと思います。
投稿者 流れ者  (社会人) 投稿日時 2010/6/23 08:13:04
おはようございます。

>文字列演算についても勉強しようと思います。
いや、そんなに身構えなくても、”&” や ”+”で文字列をつなげられるといったことぐらいで、
注意点としては、"+"は数値演算にも使われるから、文字列の連結には使用しない方が良いといったところです。

もし勉強されるのであれば、文字列関数等の”関数”を勉強したほうが良いと思います。
投稿者 るしぇ  (社会人) 投稿日時 2010/6/23 10:23:41
> もし勉強されるのであれば、文字列関数等の”関数”を勉強したほうが良いと思います。
のヘルプでは「文字列操作関数」といったキーワードで引っ掛かるページに
まとまっていましたが、.NET 以降 String クラスにまとまったので、メンバの
ページを見れば10分ぐらいで概要はつかめるようになりましたね。
[String メンバ]
http://msdn.microsoft.com/ja-jp/library/system.string_members.aspx