フォームの作成(2/2)
検索の実行フォームの作成
書き込みを検索するフォームの作成です。ポイントは、フォームのコントロールとクエリを連結させ、コントロールで選択、または入力した内容で、選択クエリを行うパラメータクエリを実行させる点です。
フォームのデザイン
テーブル「所属」のフィールド所属とテーブル「情報の種類」のフィールド情報の種類から、コンボボックスを作成します。このコンボボックスは、選択した値をクエリに渡すようにしますが、ここではテーブルデータを読み出しリストにするだけです。また、「氏名」用に非連結のテキストボックスを1つ用意し、[検索の実行]と[閉じる]という2つのボタンを配置します。各コントロールには、分かりやすい名前を付けておいてください。

クエリの作成
フォームができたら、今度はクエリ「検索クエリ」を作成します。選択するデータは、テーブル「メインボード」のすべてのフィールドです。「抽出条件」には、「検索の実行フォーム」の「所属」「情報の種類」コンボボックスと「氏名」テキストボックスを指定します。2つ以上の条件で抽出しますので、組み合わせとしては次の4つです。
- 「所属と氏名」
- 「所属と情報の種類」
- 「氏名と情報の種類」
- 「所属と氏名と情報の種類」
抽出条件の入力にコントロールを指定するには、「抽出条件」欄の上で右クリックし、ショートカットメニューから[ビルド]を選びます。
そして、[検索の実行フォーム]-[所属コンボ]をダブルクリックすると、Forms![検索の実行]![所属コンボ]という式ができあがります。このようにして、作成する抽出条件に合わせフォームのコントロールを指定していきます。

作成した抽出条件をSQL文で見てみると次のようになっています。
SELECT メインボード.[No], メインボード.所属, メインボード.氏名, メインボード.情報の種類, メインボード.記入日時, メインボード.表題, メインボード.内容 FROM メインボード WHERE(((メインボード.所属)=[Forms]![検索の実行]![所属コンボ]) AND ((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト])) OR (((メインボード.所属)=[Forms]![検索の実行]![所属コンボ]) AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ])) OR (((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト]) AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ])) OR (((メインボード.所属)=[Forms]![検索の実行]![所属コンボ]) AND ((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト]) AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ]));
従って、必ず2つ以上の条件を組み合わせるか、「氏名」だけで検索したければ専用のクエリを作成し実行させるようにします。
検索の実行フォームとクエリの連携
クエリが作成できたら、再び「検索の実行」フォームのデザイン画面に戻り、[検索の実行]ボタンのプロパティを表示します。そして、「イベント」ページの[アクション]で[クエリを開く]を、[クエリ名]で[検索クエリ]を選びます。
これで、フォームのコンボボックスやテキストボックスを使って、「検索クエリ」を実行できます。

メインボード用フォームの作成
メインボード用フォームを作成します。ポイントは、[レコードソース]プロパティにテーブル「メインボード」を指定することです。これは、フォームのプロパティの「データ」ページにある[レコードソース]プロパティに、テーブル「メインボード」を指定します。また、最新の書き込みから順番に表示するために、フィールドNoを降順に並べ替えます。この操作は、プロパティの[並べ替え]にメインボード.[No] DESCと入力します。
![画面14 プロパティの[並べ替え]に値を入力 画面14 プロパティの[並べ替え]に値を入力](http://cz-cdn.shoeisha.jp/static/images/article/423/Image14.gif)
データを表示する部分は、「フィールドリスト」を表示し、各フィールド名をフォームにドラッグ&ドロップして作成します。また、ヘッダー部分に[書き込み][検索][終了]の3つのボタンを配置します。[書き込み]と[検索]ボタンにはそれぞれのフォームを表示するマクロを、プロパティウィンドウの「イベント」ページにある[クリック時]に作成し、[終了]ボタンは同じくプロパティウィンドウの「イベント」ページにある[クリック時]で、[アクション]の中から[終了]を選択するようにします。
起動用フォームの指定
最後に、起動用フォームの指定を行います。これは、Accessのデータベースを開いたときに、特定のフォームを表示させる機能です。Accessのメニューから[ツール]-[起動時の設定]を選び、[フォーム/ページの表示]リストから[メインボード]を選びます。これで、このデータベースを起動すると、最初にフォーム「メインボード」が表示されます。
また、[データベースウィンドウの表示]のチェックを外すと、データベース起動時はフォームだけが表示されます。
まとめ
Accessで掲示板機能を持ったデータベースを作成しました。ポイントは、フォームのコントロールとテーブル、そしてコントロールとクエリを連動させる点です。テーブルへのコントロールを使った入力は、フォームのプロパティで入力先のテーブルを指定します。クエリのパラメータ設定では、クエリの抽出条件でコントロールを指定します。
本プログラムでは、3つのコントロールで抽出条件を4つ組み立てましたが、コントロールの数が多ければ抽出条件の数も増えていきます。本記事を参考に、いろいろな掲示板を作ってみてください。



![画面16 [フォーム/ページの表示]リストから[メインボード]を選ぶ 画面16 [フォーム/ページの表示]リストから[メインボード]を選ぶ](http://cz-cdn.shoeisha.jp/static/images/article/423/Image16_s.jpg)