質問:
テーブル
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のない保証の正しさ.

  • DVDに音楽を入れたいのですが、可能ですかそれとも不...
  • cdやdvdに書込みをする時700MBや4.7GBと書いてあるの...
  • 新アカウントを作ったのですが、新アカウントにはお気...
  • RW+録画したのですが、3番組を録画してそのうち1...
  • パソコンがウィルスに感染すると、どうなるんですか?...
  • ブログをつくりはじめましたが画像のUPロードがgif...