• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA : Accessのデータを検索)

Excel VBAでAccessのデータを検索する方法

このQ&Aのポイント
  • Excel VBAを使用して、Accessのデータを効果的に検索する方法を学びましょう。
  • 除外テーブルの管理IDを使って、指定のデータを検索することができます。
  • VBAのコードを使用して、データベースの接続と検索を行いましょう。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

考え方が全然違います。 Findでは探す条件を指定するのです。 例えば"管理ID='111'"のような指定になります。 >adoRs.Find adoRs.Fields("管理ID") & "=" & findName これだと、レコードセットの管理IDが左辺になってしまい、 "E003=E003"のような文字列になります。しかも、 管理IDが数値なら良いですが、文字列なので引用符で 囲む必要があります。 それと「あるなし」を調べるだけならFindは使わない方が 良いでしょう。つまり、SQLを次のようにします。 fSql = "select 管理ID from 除外テーブル" fSql = fSql & " where 管理ID='" & findName & "'" これでレコードセットを作り、EOFプロパティを見ます。 Trueなら該当レコードが無く、Falseなら該当レコードが あります。その後Closeすれば良いでしょう。

xcode_15
質問者

補足

ご回答を戴きまして、誠に有難うございます。 この方法ですと、adoRs.EOFにデータの有無を調べるだけで、"E003"を調べません。 "S003"と入力をして、Trueになるはず(データには存在しません)がFalseになってしまいます。 つまり、Do - Loop で該当する"E003"の確認をすることになるのでしょうか? Function FindRecode(ByVal findName As String) As String fSql = fSql & " where 管理ID='" & findName & "'" 'レコードセット If adoRs.EOF = True Then MsgBox "該当するレコードは存在しません" FindRecode = "" Exit Function Else MsgBox "該当するレコードを、発見!!" Do Debug.Print adoRs.Fields("管理ID") adoRs.MoveNext Loop Until adoRs.EOF End If FindRecode = adoRs.Fields("管理ID") End Function 私の解釈が間違っていたら、指摘してください。

関連するQ&A