<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>絞込みの仕組みを作る
 基本のクエリー サブフォームで 表形式のフォームで コンボボックスで 全件表示 コンボボックスが片方空っぽでも 2段階の絞り込み



■表形式のフォームで

原理はサブフォーム使って作った前ページのクエリー&フォーム&マクロと同じなんですけども、いちおう最初からやってみましょう。

手始めにとりあえず、商品マスターを基にした表形式のフォームを作ります。まあ、とりあえず、です。
で、そのフォームのヘッダーかフッターのとこに、ただのテキストボックスをふたつ作りましょう。
名前はテキストxxのまんまでもいいんですけど、ちょっと味気ないんで、なんか意識して変更した方がいいですね。

ただし!今回は、このフォームの中に既に[種類][ランク]というテキストボックスが・・・ありますよね。詳細のとこに。
だからもうこの名前は使えないんです。このフォームの中では・・・だぶっちゃってたら名前の意味ないもんね。

じゃー、例えば[条件1][条件2]とかにしてみましょうか。数字を使うときは半角全角、ちょっぴり気をつけてくださいね。

後は適当にフォーム作り替えてください。
あ、このフォームのプロパティの「更新の許可」をいいえにしちゃうと、多分[条件1][条件2]のテキストボックスへの入力もできなくなっちゃいます。
データのプロパティいじるなら「追加の許可」「削除の許可」のふたつにしておいてくださいね。

でー、このフォームの名前を仮に[フォームその2]とつけたとします。


あとは簡単。さっきとおんなじです。
このフォームが基にするクエリーを作ります。

抽出条件に、フォーム内に作ったテキストボックスを指し示す式みたいなのを入力すればいいんですよね。挑戦してみてください。

クエリー名は・・・じゃ、[クエリーその2]にしますか。保存して閉じてください。


で、さっきのフォームのレコードソースを、商品マスターから[クエリーその2]に変更します。

で、仕上げに、[ランク]入力後の再クエリーですね。マクロ作りましょう。

マクロビルダを使います。マクロ名は何か適当にわかりやすいものをつけてください。

んで、再クエリーというアクションを選んでください。

で、何を再クエリーするかというと、[クエリーその2]ですよね。
[クエリーその2]は[フォームその2]のレコードソース。
なのでフォーム全体を再クエリーすることになります。

その場合は、特にコントロール名はいらないんです。なので、空欄のままっす。

マクロを保存しながら閉じ、フォームに戻ります。


で、動きはどうかな・・・。
まず、フォームビューにすると、いかがでしょう。

とりあえず最初は、参照するテキストボックスが空っぽなんで、何にもでませんけども(白い行は、新規追加行ですよね。
フォームのデータプロパティを調節してる方は出てこないと思います)・・・。

種類とランクをしていしてEnterキーを押すと?????再クエリーされます?

これでもオッケーです。サブフォームより手軽でしょうかね。あとは好みもありますけど・・・。
これも、ケースバイケースでうまく使い分けていくと、より使いやすい検索画面を作り込むことができるはずですよ。

とどのつまり、上のような表形式フォームの場合と、サブフォームを埋め込んで使う場合の違いは、再クエリーするものが違うってことだけじゃないですかね。
あとは、結局似たようなもんですよね。見た目もあんましかわんないし。


要するに、フォーム内のテキストボックスクエリーの抽出条件の関係がしっかり把握できていれば、フォームのデザインが少々変わっても、サブフォームにしようが表形式フォームにしようが単票形式のフォームにしようが、どうってことないはずなんですね。

で、抽出条件を再入力したら再クエリーするっていう動作とタイミングも、ひとつの流れとして覚えてしまえばよいと思います。

後は

forms![フォーム名]![テキストボックス名]

という、テキストボックスを指し示す変数みたいなやつの書き方に慣れるってところでしょうか。これも決まった書き方なので、早いとこ慣れちゃってくださいね。