SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Accessによる検索機能付き掲示板の作り方

フォームとクエリを利用して書き込み・検索機能を持った掲示板を作る

フォームの作成(2/2)

検索の実行フォームの作成

 書き込みを検索するフォームの作成です。ポイントは、フォームのコントロールとクエリを連結させ、コントロールで選択、または入力した内容で、選択クエリを行うパラメータクエリを実行させる点です。

フォームのデザイン

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

画面10 検索の実行フォームのデザイン
画面10 検索の実行フォームのデザイン
補足
 フォームのプロパティで[スクロールバー]を[いいえ]にしておくと、フォームに余白ができず綺麗に見えます。また、ポップアッププロパティを[はい]にしておくと、Access内ではなくデスクトップ上を移動できるフォームになります。

クエリの作成

 フォームができたら、今度はクエリ「検索クエリ」を作成します。選択するデータは、テーブル「メインボード」のすべてのフィールドです。「抽出条件」には、「検索の実行フォーム」の「所属」「情報の種類」コンボボックスと「氏名」テキストボックスを指定します。2つ以上の条件で抽出しますので、組み合わせとしては次の4つです。

  • 「所属と氏名」
  • 「所属と情報の種類」
  • 「氏名と情報の種類」
  • 「所属と氏名と情報の種類」

 抽出条件の入力にコントロールを指定するには、「抽出条件」欄の上で右クリックし、ショートカットメニューから[ビルド]を選びます。

 そして、[検索の実行フォーム]-[所属コンボ]をダブルクリックすると、Forms![検索の実行]![所属コンボ]という式ができあがります。このようにして、作成する抽出条件に合わせフォームのコントロールを指定していきます。

画面11 「検索の実行フォームのコントロールを選ぶだけ
画面11 「検索の実行フォームのコントロールを選ぶだけ

 作成した抽出条件をSQL文で見てみると次のようになっています。

SELECT メインボード.[No], メインボード.所属,
       メインボード.氏名, メインボード.情報の種類,
       メインボード.記入日時, メインボード.表題,
       メインボード.内容
FROM メインボード
WHERE(((メインボード.所属)=[Forms]![検索の実行]![所属コンボ])
AND ((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト]))
OR (((メインボード.所属)=[Forms]![検索の実行]![所属コンボ])
AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ]))
OR (((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト])
AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ]))
OR (((メインボード.所属)=[Forms]![検索の実行]![所属コンボ])
AND ((メインボード.氏名)=[Forms]![検索の実行]![氏名テキスト])
AND ((メインボード.情報の種類)=[Forms]![検索の実行]![情報の種類コンボ]));
画面12 抽出条件の設定
画面12 抽出条件の設定
補足
 単独のフィールドを検索条件にクエリを実行すると、単独のフィールドでのクエリ結果が常に表示されてしまいます。例えば、この4つの条件に「氏名」だけで検索する条件を加えると、「氏名」は常に検索条件に当てはまることになり、「所属と氏名と情報の種類」という条件で検索しても、「氏名」データがすべて表示されてしまいます。
 従って、必ず2つ以上の条件を組み合わせるか、「氏名」だけで検索したければ専用のクエリを作成し実行させるようにします。

検索の実行フォームとクエリの連携

 クエリが作成できたら、再び「検索の実行」フォームのデザイン画面に戻り、[検索の実行]ボタンのプロパティを表示します。そして、「イベント」ページの[アクション]で[クエリを開く]を、[クエリ名]で[検索クエリ]を選びます。

 これで、フォームのコンボボックスやテキストボックスを使って、「検索クエリ」を実行できます。

画面13 実行させたいクエリを選ぶ
画面13 実行させたいクエリを選ぶ

メインボード用フォームの作成

 メインボード用フォームを作成します。ポイントは、[レコードソース]プロパティにテーブル「メインボード」を指定することです。これは、フォームのプロパティの「データ」ページにある[レコードソース]プロパティに、テーブル「メインボード」を指定します。また、最新の書き込みから順番に表示するために、フィールドNoを降順に並べ替えます。この操作は、プロパティの[並べ替え]にメインボード.[No] DESCと入力します。

画面14 プロパティの[並べ替え]に値を入力
画面14 プロパティの[並べ替え]に値を入力

 データを表示する部分は、「フィールドリスト」を表示し、各フィールド名をフォームにドラッグ&ドロップして作成します。また、ヘッダー部分に[書き込み][検索][終了]の3つのボタンを配置します。[書き込み]と[検索]ボタンにはそれぞれのフォームを表示するマクロを、プロパティウィンドウの「イベント」ページにある[クリック時]に作成し、[終了]ボタンは同じくプロパティウィンドウの「イベント」ページにある[クリック時]で、[アクション]の中から[終了]を選択するようにします。

画面15 メインボード用フォームのデザイン
画面15 メインボード用フォームのデザイン

起動用フォームの指定

 最後に、起動用フォームの指定を行います。これは、Accessのデータベースを開いたときに、特定のフォームを表示させる機能です。Accessのメニューから[ツール]-[起動時の設定]を選び、[フォーム/ページの表示]リストから[メインボード]を選びます。これで、このデータベースを起動すると、最初にフォーム「メインボード」が表示されます。

画面16 [フォーム/ページの表示]リストから[メインボード]を選ぶ
画面16 [フォーム/ページの表示]リストから[メインボード]を選ぶ

 また、[データベースウィンドウの表示]のチェックを外すと、データベース起動時はフォームだけが表示されます。

まとめ

 Accessで掲示板機能を持ったデータベースを作成しました。ポイントは、フォームのコントロールとテーブル、そしてコントロールとクエリを連動させる点です。テーブルへのコントロールを使った入力は、フォームのプロパティで入力先のテーブルを指定します。クエリのパラメータ設定では、クエリの抽出条件でコントロールを指定します。

 本プログラムでは、3つのコントロールで抽出条件を4つ組み立てましたが、コントロールの数が多ければ抽出条件の数も増えていきます。本記事を参考に、いろいろな掲示板を作ってみてください。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/423 2006/06/29 00:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー