• 締切済み

ADODCを使ったアクセスへの検索の仕方

 こんにちは。いつもお世話になっています。早速ですが、今、VBを勉強中なのですが、  ADODC(adoFind)を使って  datagrid(dgdFind)に  Microsoft Accessのデータを表示し、  テキストボックス(txtFind)と  コマンドボタン( cmdFind)を  それぞれ一つずつ用意し、そのテキストボックスに入力したものをアクセスデータの中から検索して出したいと思っています。(つまりは検索ボタンを作りたいのです。)  検索後のフォーカスは、アクセスのセル内で結構です。  また、何か違うコントロールや、オブジェクトを使っても一向に構わないと思っています。  ちなみにアクセスの表示の方法や、その他コントロールの作り方などはわかっています。ただ、上の検索ボタン(cmdFind)のコード(ここが一番重要なのに。)の書き方がわかりません。  どなたか書き方のわかる方いらっしゃいましたら、どうか教えてください。お願いします。

みんなの回答

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.1

ポイントはADODBとして呼び出したデータベースオブジェクトにSQL命令を与えて、結果データを得ることです。 そのためのメソッドが .Execute( )メソッドで、SQL命令の使い方を身につけなければなりません。 そして、取り出した結果データのことをコレクションとよび、fatch 命令で必要なフィールドを取り出す操作が必要です。 とりあえず、次のコードがプログラムと同じフォルダにおいたアクセスデータベース(DBMei)を指定して、検索対象のフィールド名(TaisyouFeildMei)に探す文字(SagasuMoji)を含むレコードを抽出し、メッセージボックスに表示するプログラムです。 より細かい検索条件や指定したフィールド内容の取り出し方やデータグリッドへの埋め込み方は、仕組みが分かったら挑戦していくとよいでしょう。 Sub button1_click() DBMei="操作対象アクセスデータベース名.mdb" SiteiTableMei="操作対象テーブル名" SagasuMoji="花言葉" TaisyouFeildMei="検索対象フィールド名" With CreateObject("Scripting.FileSystemObject") DBPath = .GetFolder(".").path & "\" & DBMei ' msgbox DBPath ' 対象のアクセスデータベースへの接続 With CreateObject("ADODB.Connection") .Provider = "Microsoft.Jet.OLEDB.4.0" .Open DBPath ' SQL文の代入 次の行でデータベース操作命令文を作成する SQL1 = "SELECT * FROM " & SiteiTableMei & " WHERE " & TaisyouFeildMei & " Like '*" & SagasuMoji & "*';" MsgBox .Execute(SQL1).GetString(, , , vbLf) If Err.Number<>0 Then MsgBox Err.Description,,"SQL実行時エラー" .Close End With End Sub また、下のサイトからダウンロードできる拙作のSQL実習キットがSQLの学習に役立つと思いますので、よかったら操作してみてください。そしてそのダウンロードコンテンツの中の、"アクセスデータベースSQL操作画面.hta"のプログラムコードを分析すると、アクセスデータベースの操作方法が理解できるはずです。示しておいたコードも、実はこのプログラムを編集したものです。

参考URL:
http://www.vector.co.jp/soft/dl/win95/edu/se479341.html

関連するQ&A