アプリ版:「スタンプのみでお礼する」機能のリリースについて

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だけを表示することはできました。
どのようにすればテキストボックスや変数で、表示したいコ-ドを指定したら良いか教えて頂けないでしょうか。

A 回答 (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 & "';"
で期待する結果が得られそうです
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/21 09:55

変数について学習するとよいでしょう。



「"」で囲んだ文字は、純粋に文字列として認識されます。つまり「"」と「"」の間に TextBox1.Text と書いても当然それは、「TextBox1.Text」という文字列を指定しているだけで、TextBox1 の Text プロパティの値を取り出している事にはなりません。

文字列の連結には & か + を使います。つまり

"SELECT ~ GoodsId = '" + TextBox1.Text + "'"

といった感じです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/21 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!