• 締切済み

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

  • テキストボックスにACCESSから取り出した値を入れたい

    VB6.0 ACCESS2000で開発しています。 テキストボックスにACCESSから取り出した値を入れたいのですが 作業員マスタというテーブルがあり そこには作業員IDと作業員名があります。 1つ目のテキストボックスの隣にコマンドボタン(▼)を作り そのボタンを押すとDataGridが出てきて 作業員IDと作業員名が表示されます。 そしてその中の該当する列をクリックすると 作業員IDは一つ目のテキストボックスへ 作業員名は二つ目のテキストボックスへ書かれます。 ここまで出来たのですが DataGridの表示を奇数列は白、偶数列は青にしたいのですが 何処をどうすればいいのかわかりません。 もしDataGridでは出来ないのであれば 他に良い方法を教えてください。 お願いします。

  • AccessのDataGridコントロールについて

    初心者です。宜しくお願いします。 VB6.0でDataGridコントロールを使用する場合は、DataSourceプロパティにRecordsetオブジェクトを代入することによりDataGridコントロールに取得したレコードセットを表示しますが、 例) Set DataGrid1.DataSource = rs Access 2000ではDataGridコントロールにDataSourceプロパティが見当たりません。 どのようにしてレコードセットを表示するのでしょうか? Google等で検索しましたがVBの情報ばかりでAccessのDataGridコントロールに関して取り上げているページが見つかりません。 宜しくお願いします。

  • アクセスのセルの数え方。

     こんにちは。いつもお世話になっています。今、VBを勉強中なのですが、Datagridを使ったAccessの使い方について質問があります。DatagridをつかってAccessを表示したとき、横(column)の列の数え方としては、 'Adodc1.Recordset.fields.item(index)' になりますよね?しかし、縦(Raw)の列の数え方がどうしても知ることができません。誰か、知っている人がいましたら、教えてください。お願いします。

  • アクセスでの計算フォーム

    VBの経験があるものですが、今回アクセス上で、VBのような計算フォームを作りたいと思ったのですが、エラーが出ます。 フォーム上のボタンを押すと、テキスト1~6を足して、答えのテキストに表示させるようにしたいのですが、デバッグをすると、VBの方でボタンクリックの部分で「コントロールがフォーカスを取得していないときにコントロール・・・」というエラーが出てきます。 手順として、テキストを作成し、ボタンを作成し、ボタンクリックのソース上で、テキスト1~6を足していく・・・ ということでは、まずいのでしょうか?

  • Visual Basic.NETでデータを書き込む

    初心者です、宜しくお願いします。 フォームにはDataGrid(Access.mdbのデータが表示されています。)、書き込みボタン、テキストボックスがあります。 やりたい事はテキストボックスに入力したデータを書き込みボタンをクリックするとAccess.mdbに書き込みし、DataGridに表示することですがよく分かりません。何方が教えて下さい。 宜しくお願いします。

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。

  • Excelのワークシート上に検索窓とボタンを作りたい

    Excelのワークシート上に検索窓とボタンを作ろうとしています。 コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。 1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。 2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。 3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。 自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。

  • Access 任意の文字を含むレコードを検索したい

    すべてのレコードを表示する帳票形式のフォームのヘッダーに、非連結のテキストボックスにキーワードを入力して検索するコマンドボタンを設定し、検索対象のレコードを表示させたいと思っています。 特定のコントロールソースでの検索はできたのですが、すべてのコントロールソースの中から検索する方法がわかりません。 ご存じの方がいらっしゃったらお教えください。 【特定のコントロールソースでの検索でやったこと】 非連結のテキストボックスを作り、コマンドボタンのイベントプロシージャで次のように記述しました。 Private Sub cmd_検索_Click() Me.Filter = "[非連結のテキストボックスの名前] Like " & " '*" & Me.特定のコントロースソースの名前 & "*'" Me.FilterOn = True End Sub Filterを使った上記の方法は、Accessの本を参考にしました。 本では特定のコントロースソースについての検索だったので、そのまま使わせてもらったのですが、Visual Basicを勉強していないのでそれ以上のことは私には難しいです。この程度の私ですが、できる方法があれば教えてください。 よろしくお願いします。

  • VB6.0でアクセス2000のデータを使いたいです。

    VB6.0でアクセス2000のデータを使用してdatagridに表示したいのですが、データオブジェクトのdatabasename(プロパティ)にアクセスデータを指定しても、recordsource(プロパティ)にアクセスのテーブル名が表示されないのです。他のアクセスデータで表示される場合もあるのですが、その違いが不明ですので宜しくお願い致します。

  • VBからACCESSレポートの出力について

    仕事で住所録データベースを作っているところなのですが、 色々と分からないことがあるので、是非、相談に乗って下さい。 VBからACCESSレポートの出力について、行っているのですが データベースから、自分の条件にあったデータだけを取ってきたい のですが、どうしたらよいのでしょうか?? ちなみに、ACCESSのクエリを実行して、欲しいデータを取ってくる のではなく、VB上の画面に入力したデータで、ACCESSのデータを 検索を行うものです。 例えばこんな感じです。 ↓ VBで検索一覧画面から、社員番号を入力する。(テキストボックス) ↓ 実行ボタンを押したとき、テキストボックスに入った社員番号を 自動的に読み取り、ACCESSのデータベースから データを検索する。 こんな感じです。分かりにくい説明ですいませんが 宜しくお願いします。

iPhoneへのスキャンについて
このQ&Aのポイント
  • ブラザー製品【DCP-J582N】での原稿をスキャンしてiPhoneに取り込む方法について相談です。
  • iOSの無線LAN接続【SoftBankAir2】を利用して、関連アプリ【iPrint&scan】を使用してiPhoneへスキャンした原稿を取り込むことができない状況です。
  • 試したことやエラーなどは不明ですが、ブラザー製品のスキャン機能とiPhoneの接続方法についてお困りの状況です。
回答を見る

専門家に質問してみよう