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



■コンボボックスで

じゃ、次に、[種類]と[ランク]をコンボボックス使って選択する方法、やってみましょうかね。
「ねりもの」なのに「なりもの」って間違って入力しちゃったら、なんにも検索できないですからねぇ。

テキストボックスは、ショートカットメニューを使ってコンボボックスかリストボックスに変更することができますので、この機能を使って変更してみてください。

で、まず左の方のコンボボックスのプロパティから見ましょうか。
「値集合ソース」という欄に、商品マスターを選びます。

[種類]を一覧するテーブルみたいなのがあればいいんですけど・・・。
今回はないんで、ここから「ねりもの、くだもの、やさい」の3つを拾い出してみようと思います。

もちろん、値集合タイプ値リストに変更して、値集合ソース欄に

ねりもの;くだもの;やさい

と、半角セミコロンで区切って入力してもいいんです。でも、これだと、種類が増えたり減ったりくだものがフルーツになったりしたとき、なおすのめんどうなんで、なるべくテーブルかクエリーを用意した方が・・・おすすめかもしれないです。

で、右端のビルドボタンをクリックします。商品マスターの中身そのまま使うわけにいかないですからね。ちょっと手直しします。

こんなメッセージでますが、「はいはい」といっておきましょう。


クエリー作るときの画面ですよね。これ使います。

選ぶのは[種類]だけ。

これだけだと、商品マスターのレコード数分、種類が表示されちゃいますよね。
これじゃあ、無駄が多い・・・。

かといって、種類テーブルを作るのもめんどくさいしーー・・・というとき、お役立ちの機能があります。
デザインの画面に戻って、と。

クエリーにもプロパティがあります。ちょっとですけどね。ねずみ色のとこダブルクリックすると、出てきたりしますよ。

固有の値っていうのをいじりますと・・・。

ほーっほっほっほっ。よろしくて?こうなります。
ダブってたデータがまとまりますよね。
これがコンボボックスの中に表示されれば、まあ、種類を選択する時の一覧の代用くらいは勤まりそうですよね。

で、このウィンドウ、閉じます。閉じるときこんなメッセージ出たりしますけども、「はいはい」と答えておきましょう。


[ランク]の方も、要領はおなじですんで、挑戦してみてください。
これで、「ねりもの」を「なりもの」と入力してしまう心配はないですね。
「ランク」を選び終わったところで、勝手に再クエリーする動きは変わらないので、特に他に変更する必要はないと思います。


ここまで、いかがでしょうか。要領、つかめました?たいして難しいことじゃないですよね。
また、みなさんが今取り組んでらっしゃるデータベースの中で、こんな仕組みが役立ちそうでしょうか。
つくねとかかまぼこなんかのdb作っててもしょうがないんで、実際にご自分の周りの情報に置き換えて考えてみてくださいね。

で、ここからは応用というか、一歩すすめた作り込みをしようと思います。よかったら参考になさってください。


まず・・・。このフォーム開くと、当然コンボボックスは空っぽですよね。非連結ですから、前回の値を保持するわけじゃないんです。

これはこれでいいんですけど、種類もランクもわかんない商品もあるので全件表示させたいなぁ・・・なんてこと、ありません?
そういう時はどうしたらいいんでしょう。


それから、これは取っても大切なことなんですが、コンボボックスとかテキストボックスが空っぽの状態。
まだ何も入力してない未踏の状態ですね。俗にNullというんですが、抽出条件がNullってことは、ランクがNullのレコードを探しに行っちゃうんですね。クエリーは。。。

テーブルを見ると、ランクは全部AかBかCって入力されてるし、種類を「くだもの」とだけ指定しても、何にも出てこないんです。逆もまたしかりです。

どっちか片方のコンボボックスが空っぽでも、なんかしら抽出してきてくれるようにするにはどうしたらいいでしょう。


それと、もうひとつ。これはちょっとテーブルの様子が変わるんですけど・・・。
例えば、「くだもの」の中にさらに種類分けがあって、例えば「産地」でさらに絞り込みたい、コンボボックスを使って2段階の絞り込みをするには???
この辺も挑戦してみましょう。

どれも、今までの流れを把握していればさほど面倒でもないんで、ぜひトライしてみてください。一応順番に行きますけど、どこからご覧いただいてもオッケーですよ。