マイクロソフトアクセスで広がる世界

アクセスのTIPS集

コンボボックスを使ったレコードの検索(ADOで検索)

説明

コンボボックスを使って単票形式フォームのレコードを検索して表示する方法。
フォームのヘッダ部にコンボボックスを設置し、リストを表示させ選んだレコードをメインフォーム上に表示する方法です。VBAでADOのレコードセットを使います。
(イメージ)

    技術ポイント
  • コンボボックスの値ソース設定
  • コンボボックスの表示設定
  • ADOレコードセットでのレコード検索
  • DoCmd.GoToRecord を使ってフォームのレコードを移動

作り方

1.使用するフォーム

次のフォームを事例フォームに使って行います。「番号」が主キーになっています。データ型は数値型です。

2.コンボボックスの設置
  1. フォームをデザインビューで開き、ヘッダ部を表示させます。コンボボックスを設置するのに使います。高さは1から2センチが目安です。
  2. ツールボックスからコンボボックスを選んで、ヘッダ部に設置します。名前も付けます。ここでは「コンボ検索」と命名しました。

  3. コンボボックスに表示するレコードを設定します。コンボボックスを選択した状態でプロパティの「値集合タイプ」を「テーブル/クエリ」に、「値集合ソース」の コードビルダをクリックするとクエリビルダが表示されます。元になるテーブルを追加します。ここでは「T_住所録」を使います。
  4. 必要なフィールドを追加します。検索情報に必要なフィールドを追加します。主キーフィールドの「番号」、名前が分かる「氏名」、 並び替えように「フリガナ」の3つのフィールドを選びました。「フリガナ」フィールドには並び替え設定をしました。
  5. クエリビルダを閉じます。更新確認のメッセージが出たら「はい」で更新します。プロパティを見ると「値集合ソース」にはSQL文が記述されています。
  6. 次はコンボボックスの仕様を設定します。「書式」タブに切り替えましょう。3つのフィールドを選んだので、「列数」を「3」に、 「列幅」を「0cm;3cm;3cm」にします。これは3つのフィールドの表示する各幅を指定しています。区切りはセミコロンで行います。 「番号」はレコードの特定に使いますが、表示には不要なので「0」にしました。「リスト幅」は幅合計の「6センチ」にします。
  7. 設定を終えたら、フォームをフォームビューに切り替えます。そしてコンボボックスのプルダウンボタンをクリックしてみましょう。登録レコードのリストが表示されます。
3.検索表示機能の設定
  1. コンボボックスで選んだレコードをフォームに表示する設定を行います。まずフォームをデザインビューで開きます。
  2. コンボボックスのレコードを切り替えたときに機能するイベントプロシージャを作成します。その方法は、プロパティを「イベント」タブに切り替え、「更新後処理」イベントのコードビルダを起動します。
  3. 表示されたVBAエディタの作成されたプロシージャに次のコードを記述します。緑色の文字は説明文ですので、機能には関係ありません。
  4. 機能はこれで完成です。フォームをフォームビューで表示してコンボボックスを操作してみてください。
4.その他の調整

コンボボックスの位置やラベルの調整は行っていません。分かりやすく使いやすい形状に仕上げてください。

(この項終わり)