2013年10月1日火曜日

Accessのフォームで単純検索

Microsoft Accessで帳票形式のフォームを作ると下のほうにレコード移動用ナビゲータ(?)がついています。
1から始まって欠番のない連番数値なIDが主キーであるとして、
クエリで主キーの昇順に並べることで、
そのナビゲータのレコード番号と表示されているレコードのIDが一致するので
レコード移動に関して困ることはないでしょう。
しかしテーブルがそのような仕様であることはまれで、
そうなるとレコードの検索性が非常に悪くなってしまいます。
そんなときにはフォームに一意なフィールドの単純検索ができる
コンボボックスを作ってしまうと管理便利です。

やり方は、編集したいフォームを[フォーム]カテゴリで選び
[デザイン]ボタンから[フォーム デザイン]ウィンドウを立ち上げそこで行います。
[詳細]領域の直上にマウスポインタを合わせるとその領域を全体的に下にもっていけ、
それで[フォーム ヘッダー]領域が広がります。
[ツールボックス]から[コンボボックス]を選択し[フォーム ヘッダー]領域に置くと
[コンボボックス ウィザード]が開き、
[コンボボックスで選択した値に対応するレコードをフォームで検索する]を選択して、
さらに単純検索の対象となるテーブルのフィールドを選択すると、
実行時に検索窓として動作してくれます。

なお[コンボボックス ウィザード]で
[コンボボックスで選択した値に対応するレコードをフォームで検索する]
が選択肢としてない場合があります。
これはフォームに匿名状態でクエリを埋め込んでいるとそうなるようで、
名前をつけたクエリをレコードソースにすると解決できるるっぽいです。

すでに埋め込みクエリで使っている場合は、
[フォーム]の[プロパティ]ウィンドウを開いて
[データ]タブの[レコードソース]でクエリのデザインウィンドウを開き

[保存]アイコンをクリックすればクエリ名を指定して保存されます。
そのクエリは[クエリ]タブに新規作成されますし、
フォームのレコードソースはそれになります。

0 件のコメント:

コメントを投稿