テーブル
ID 整数型
名前 テキスト型
住所 テキスト型
検索するツールを作っているんですが下の式だと「実行時エラー抽出条件でデータ型が一致しません。」
とでてうまくいきません、何度か試行錯誤したのですがやっぱりエラーが出てしまいます。
どう改良すればいいんですか?
Private Sub cmd検索_Click()
Dim con As New ADODB.Connection
Dim rec As New ADODB.Recordset
Dim mysql As String
mysql = "SELECT * FROM 個人 WHERE ID = '" & Me!txt入力 & "'"
Set con = CurrentProject.Connection
rec.Open mysql, con, adOpenKeyset, adLockReadOnly
Set Me!subフォーム.Form.Recordset = rec
Me!subフォーム.Form!ID.ControlSource = "ID"
Me!subフォーム.Form!名前.ControlSource = "名前"
Me!subフォーム.Form!住所.ControlSource = "住所"
rec.Close: Set rec = Nothing
con.Close: Set con = Nothing
End Sub
答え:
このSQLだと、txt入力に1234が入っているとした場合、
WHERE ID = '1234'
となり、文字列になります。IDは整数型ですから型が合いません。
シングルクォートを取ってみましょう。
補足の質問:
ありがとうございました。
まだまだ勉強不足ですね。この質問・回答は役に立ちましたか?
答え:
まずは簡単なことから確認していくほうがいいでしょう。
mysql = "SELECT * FROM 個人 WHERE ID = '" & Me!txt入力 & "'"
のmysqlが実際にどういう文字列になっているか確認してみては?
あるいは
mysql = "SELECT * FROM 個人 WHERE ID = '1'"
とか
mysql = "SELECT * FROM 個人 WHERE ID = 1"
のように直接値をいれたらどうなのか。
# テーブル名やフィールド名などに漢字を使うのは、無用のトラブルを
# 招くので、自分では絶対に使いませんけどね
ついでに今のままでは典型的なSQLインジェクションの例になりますから、
パラメータ・バインディングなどの方法も調べたほうがいいでしょう。
例えばMe!txt入力にシングルクォートが入っていたらどうします?
「' OR 'A' = 'A」と入れれば全部でることになるでしょ。
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.