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



■基本のクエリ

テーブルの中のたくさんの情報の中から、「指定した営業所の担当顧客だけフォームに表示したい」とか、
「東京都の取引先だけ表示したい」とか、その都度必要な情報だけ取り出したい・・・。
そんな仕組みの基本をマスターしましょう。

データの抽出/絞り込みなんて仕事は、平たく言っちゃえばAccessみたいなソフト使ってやる仕事の代表格です。
Access使っていながらこういうことやらんで、他に何をやる???って感じの仕事ですね。
とにかくいろいろなやり方がありますから、焦らずまず基本をひとつ身につけてしまいましょう。


唐突ですが、こんな感じのテーブルを用意してください。
どこの家庭にもひとつはありそうなテーブルですよね。いいから!こういうの作ってください!

いちおう、[種類]、[ランク]というふたつのフィールドがポイントになります。
シチュエーションとしては、まず、

・[種類]で絞り込みをし、
・その中で更に[ランク]で絞り込み

をしようと思います。

つまり、

[種類]で「ねりもの」を選び、
[ランク]で「A」を選ぶと、
ちくわとようかんとだてまきの情報が画面に表示される・・・。
という具合のを作ろうと思います。

いや、自分が作りたいのはちょっとちがう・・・とお思いの方もいらっしゃるかもしれませんが・・・・。
どう作ってよいかぜんぜんイメージがわかない、という方は、とにかくまずここから下の作り込みパターン、一度やってみてください。
これを主軸にして、応用していかれればよいと思いますよ。


問題は、「どこまで作り込むか」ということです。
ひとくちに「種類とランクで絞り込みがしたい」といっても、みなさんの頭の中に描かれている完成図は、それぞれバラバラだと思います。

例えば、テーブルのデータシートビュー状態のとき、ツールボタンの中に、フィルタというボタンがあります。
これを使ったってある程度の絞り込みはできるんですよ。

例えば、こんなふうに種類とランクの両方がうまく選択できるように、マスメをドラッグしたとします。
「ねりもの」と「B」が選択されてますよね。

で、赤い印のついた「選択フィルタ」ボタンをクリックします。

「ねりもの」だけでよければ、クリックして「ねりもの」と書かれてるマスメのどこかにカーソルがあれば絞り込めます。
複数フィールド組み合わせるとき、上のように選択してみてください。

と、いかがでしょう。絞り込まれたでしょう?

ツールバーに「印刷」ボタンがありますから、
このまま印刷してリストにしてもいいですよね。

これでも別にいいや、という方は、何も作らなくても、このデータシートビューでの操作方法だけ覚えれば目的は達成できます。
え、これだけなの????・・・みなさん、なんかもっと違ったイメージお持ちでしょうか?
でも、これでもちゃんと絞り込みはできてるし、マチガイじゃないでしょう?
要するに、どうやるか、っていうより、どこまで作り込むかっていうことなんです。
その判断をするために、とりあえず1パターン、基本的な作り込みの段取りに挑戦してみてください。

では、さっそくまいりましょう。


まず、上のテーブル([商品マスター]という名前だとします)を基に、こんなクエリーを作ってみます。
[種類]の抽出条件に「ねりもの」、[ランク]の抽出条件に「A」。半角全角注意してくださいね。
入力すると、両側のゴミみたいなダブルコーテーションは自動的につきます。値そのものだけ入力してください。

と、これをデータシートビューで表示すると、こうなります。ねりもので、ランクがAの商品の情報がテーブルから抽出されて表示されますよね。

ねりものか、ランクがAのものか、どちらかの条件を満たした商品を全部拾い出したい場合は、抽出条件欄を一段ずらします。

と、確認が難しいですけども・・・ねりものか、ランクがAか、どっちかの商品が全部出てきます。

これがデータ抽出の基本中の基本です。
最初のやつをAND条件、あとのやつをOR条件なんて呼びますけど、あんまり用語に振り回されないように。
どういうときどっちを使えばいいのか判別がつけば、呼び方なんかどっちでもいいんです。

今回は、そうですね・・・。最初のやつですね。ANDの方。抽出条件が横並びのやつ。。。
こっちじゃないと、目的外の商品情報まで出ちゃって、せっかく抽出したのに意味が薄れちゃいますよね。

じゃ、なんか名前をつけていったん保存して閉じましょう。ええと、[クエリー]にしましょうかね。
え?いいじゃないですか名前なんかどっちでも。わかりゃいいんですよわかりゃ。


で、このクエリーをどうやって使うか、という具体例です。
いつもねりものでランクがAの情報ばっかり知りたいわけじゃないですよね。
たまにはやさいでランクがCの商品とか、くだものでランクがBのものとか、その都度知りたい情報は変わってくるはずです。

じゃ、フォームから種類とランクを指定して、該当する商品だけ一覧表示するような、そんな仕組みを考えてみましょう。

と、ひとくちに言ってもいろんなやり方があります。ここでご紹介するのはほんの一例。
でも参考にしていただけると思いますので、挑戦してみてください。

まず、ただの無地のフォームをひとつ作ります。テーブルとか基にしてない、ただのフォームです。
その中に、これまたただのテキストボックスをふたつ作ります。
ラベルとか、テキストボックスの名前とか、とりあえず適当に変更してみてください。

わたしは左のテキストボックスの名前を[種類]、右のを[ランク]にしました。
デザインビューで見てる間は、テキストボックスの中には、「非連結」と表示されてますね。
どこのテーブルのフィールドとも結びついてない、ただのテキストボックスであることを表してます。

この辺の操作がぜんぜん分からない、という方は、フォームの作り方の部分、おさらいしてみてくださいね。

で、このフォームの[種類]、[ランク]というテキストボックスに入力された単語を、クエリーの抽出条件にします。


で、さっきの[クエリー]を、下のように書き換えます。

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

半角のカギカッコは、つけなくてももしかしたら大丈夫かもしれません。
でも、カギカッコは「実在するオブジェクト名か、フィールド名か、テキストボックスなどのコントロール名」であることを指し示す印なので、
できれば意識して入力するくせをつけておいた方がよいでしょう。

これはおきまりの書き方なので、とにかく覚ええしまいましょう。

今回は、わたしの場合、フォーム名が[フォーム]、テキストボックスの名前が[種類]なので、

forms![フォーム]![種類]

となりました。フォーム名やテキストボックスの名前が間違ってると、ちゃんと機能してくれませんから、ここんとこしっかり確認するくせつけましょう。


で、テストしたいとこですが、このクエリー、ここから先は、[フォーム]が表示されてないと動きません。あたりまえですよね。
クエリーの抽出条件に、「フォームの中のテキストボックスに入力されてる値と同じもの」っていう条件が入ってるんですから・・・。
このフォームが閉じちゃってるってことは、このテキストボックスが見つからないってことになりますのでね。

ふつうにフォームを開きます。デザインビューの状態じゃだめですよ。
ちゃんとフォームビューの状態で開いて、なんかテキストボックスに入力してください。

この時、ふたつめの[ランク]の入力の後、Enterキーを押すとか、カーソルを他のところに移動させておくとかしましょう。
でないと、Cの後に、まだなんか入力が続くのかな、まだ入力が完了してないのかな・・・と思われてしまいます。
よって、この[ランク]のテキストボックスの中身は、まだ空っぽと思われてしまいます。
とにかく強い意志を持って、「Cと一文字で入力は完了なのだ!」と意思表示をしましょう。
で、それが手っ取り早いとこでEnterキー。
テキストボックスはふたつしかないですから、上のように[種類]の方が黒反転(フォーカス、と申します)してればオッケーです。

と?????いかがでしょう。

出ます?フォームのテキストボックスに入力した値が、クエリーの抽出条件として使われますよね。

いちおう、これが基本中の基本。あとはこれをどう見せるか、っていうことで見た目の問題なんで、この仕組みがちゃんと把握できていればどうにでもなりますよ。