• ベストアンサー

VB2005とADO.NETを使った時のSELECT文の書き方で分らないことがあり困っています

VB2005とADO.NETを本で勉強中の超初心者です。本のサンプルを参考に以下のようなコ-ドを作って動作させるとDataGridViewにDBの内容が正しく表示されますが、 Dim cn As New OleDbConnection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\VB2005\Order.mdb" Dim da As OleDbDataAdapter da = New OleDbDataAdapter("SELECT * FROM Goods;", cn) Dim ds As New DataSet da.Fill(ds, "Goods") DataGridView1.DataSource = ds.Tables("Good 特定のコ-ドをFormのテキストボックスから入力して、表示させたいと思い"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"とするとエラ-になってしまいました。ちなみに"SELECT * FROM Goods WHERE GoodsId = 'A0001';として動作させるとA0001だけを表示することはできました。 どのようにすればテキストボックスや変数で、表示したいコ-ドを指定したら良いか教えて頂けないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;" "SELECT * FROM Goods WHERE GoodsId = 'A0001';" とで何が違うのかよく考えて見ましょう 『"SELECT * FROM Goods WHERE GoodsId = 』までは同じですよね "SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;" ですと GoodsIdが『TextBox1.Text』というMDBが理解できる何かと一致しないといけません TextBox1.Textを知っているのはVB側でありMDB側ではありません "SELECT * FROM Goods WHERE GoodsId = 'A0001';" の場合は GoodsIdが『A0001』という文字列のレコードを取得します となると "SELECT * FROM Goods WHERE GoodsId = '検索対象';" とすれば良いようです 前半部分は"SELECT * FROM Goods WHERE GoodsId = '" 検索対象を TextBox1.Text 末尾を"';" として文字列を連結してやれば良いでしょう 結果として "SELECT * FROM Goods WHERE GoodsId = '" & TextBox1.Text & "';" で期待する結果が得られそうです

SIPPOPAPA
質問者

お礼

分り易く回答して頂きありがとうございました。 教えて頂いたとおりに直して、希望する結果が得られました。

その他の回答 (1)

noname#259269
noname#259269
回答No.1

変数について学習するとよいでしょう。 「"」で囲んだ文字は、純粋に文字列として認識されます。つまり「"」と「"」の間に TextBox1.Text と書いても当然それは、「TextBox1.Text」という文字列を指定しているだけで、TextBox1 の Text プロパティの値を取り出している事にはなりません。 文字列の連結には & か + を使います。つまり "SELECT ~ GoodsId = '" + TextBox1.Text + "'" といった感じです。

SIPPOPAPA
質問者

お礼

回答ありがとうござました。 メッセ-ジボックスで文字列の間に変数の値を表示する時に 使っていた方法と、今回の内容とが結びつかなかったのは まだ基本的なことが分っていないと痛感しました。 教えて頂いた内容で希望通りの結果が得られました。

関連するQ&A