<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--2段階の絞込み
  1 → 2 → 3



で、フォームはどっかに開いたまま、隅っこの方に置いといてください。最小化しといてもいいですね。閉じちゃうより、いちおうどっかに出しておいた方が都合がいいので・・・お任せしますので、フォームは閉じずに、邪魔にならないとこに置いておいてください。

んでは、今度はクエリAを修正します。

それぞれの抽出条件を、コンボ14、コンボ16の中の値、という具合に書き換えます。

この書き方は、みなさんもうオッケーですよね。コンボボックスの名前変えてる人は、注意してください。
ここの抽出条件の書き方が間違っていると(あるいは存在しないフォーム名とか入れてると)「パラメータの入力」っていうウィンドウが出てきちゃいます。
いろんなコーナーでもお話してますけど、Accessでは、フォーム名とかテキストボックス名とかコンボボックス名とか、とにかく「名前」が命ですんで、常に、今関係しているフォームやコンボボックスの名前を意識しながら作業する癖、付けてくださいね。

データシートビューに切り替えてみましょうか。そっと切り替えてみてください。

フォームA、どっかに開いたままの状態にしていれば、ちゃんと結果が出てくるはずです。1件もない、という人は、フォームの中の「コンボ14」「コンボ16」が空っぽなんじゃないでしょうか。いったんクエリのデザイン画面に戻って、フォームの中のコンボボックスにそれぞれ何かグループと素材を選んで、再びデータシートビューに切り替えてください。
まだ作成途中ですからね。テストも少々手間がかかります。

どうでしょう。今フォームAで選んでるグループと素材で絞り込まれました?
オッケーなら、クエリは保存しながら閉じてください。


んでもって、忘れちゃいけないのが「再クエリ」です。
今度は、フォーム全体(フォームAがレコードソースにしているクエリAの抽出条件が変わったのよ、ってことで)を再クエリするイメージになるので、コントロール名はイリマセン。


では、いったんフォームを閉じて、改めて開いてみるとしましょうか。
とりあえず、1件も出てこないです。白い行が1行あるだけ・・・現状ではコレでオッケーです。

コンボ14の方で「いも」を選んでも、まだ何の変化もありません。

でも、コンボ16の方で「じゃがいも」を選ぶと・・・。
絞り込まれた結果が出てきます???

これだと、両方のコンボの中を選択しないと結果が出てこないんですけど、矛盾した抽出とかわけわかんない状態にはならないと思います。とりあえずコレが、2段階の絞込みの基本形ですね。
3段階4段階にしたいときも、考え方や要領は同じです。


ちょっとだけ横道にそれて、細かいお話なんですが・・・。一番下の白い空白行、これを表示させたくない!っていう場合のお話です。

これは、「新規入力行」です。つまり、コレを非表示にするということは、このフォームから新しくデータの追加しない、ってことになります。それでもよいです?

こればかりは仕様なんでどうしようもない(ちょっとダジャレ)ので、非表示にしてこのフォームからの追加の処理をしないってことにするか、我慢して表示したままにしておくか、どちらかってことで。

これは、フォームのデータプロパティ内で行います。「追加の許可」を「いいえ」にすれば、一番下の空白行は出なくなりますね。

できました?
いちおう、ここまでが、2段階の絞込みの基本形です。


さて、ここからが問題なんですけど・・・この状態でオッケーなら、これで完成ですよね。
でも・・・。フォーム開いたとき、まず全件表示されてて、「いも」を選んだらいものレコードだけになって、その中からさらに「さつまいも」を選びたい・・・って時のお話です。つまり、どっちかの(あるいは両方の)コンボが空欄のままでも、片方の抽出条件だけ生かして抽出してほしいってことです(あるいは両方からっぽなら抽出条件がないということで全件出してほしい)。

まず、現状を整理しましょう。
上のテーブルの中の、「グループの値が、フォームのコンボボックスの値と同じもの」っていう抽出をしようとしてますよね。グループの列には、いもかまめって入力されてます。コンボ14が空っぽ、未選択、ということは、グループの列の値が空欄のレコードを探します。

ないですよね。
ないので、1件も出てこないんです。

コンボ16の方も同じです。
この意味がイマイチわからず、「なんでコンボ14を空っぽにしているのに、全件出てこないの?」ってなっちゃうと、この先のお話も意味がわかりにくいと思いますんで、まずはここのところ、整頓しておいてくださいね。「からっぽ」というのも、ひとつの条件になりえるのです。

んでは、「フォームのコンボ14が空っぽだったら全件出して、なんか選んであったらそれを抽出条件に使う」という、非常に都合のよいクエリを作っていかないといけないんですね。そんなの作れるかなぁ(やる気出せ)。
うーん。

これを実現させるためには、ちょっとばかり綱渡りみたいなことやらないといけないですね。
挑戦してみますか?