<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キー。
テキストボックスはふたつしかないですから、上のように[種類]の方が黒反転(フォーカス、と申します)してればオッケーです。
と?????いかがでしょう。
出ます?フォームのテキストボックスに入力した値が、クエリーの抽出条件として使われますよね。
いちおう、これが基本中の基本。あとはこれをどう見せるか、っていうことで見た目の問題なんで、この仕組みがちゃんと把握できていればどうにでもなりますよ。