<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97データベース工作室>食いだおれデータベース
  Page1Page2Page3Page4Page5Page6Page7Page8Page9Page10Page11Page12Page13



でも、まだコンボボックスからなんか選んでも何にも起こらないですよね。
絞り込みの仕組みを作らないと。慌てない慌てない。

クエリーを使う方法が基本ですし、あたし個人としてもクエリーを活用する方が好きなんですけど、今日はあえて「フィルタ」という機能に挑戦しようと思います。

フォームのプロパティの中に「フィルタ」と「フィルタの使用」というのがあります。
このふたつを使うわけです。
どちらかにカーソルを置いて、[F1]キーを押すと、フィルタに関するヘルプ画面が出てきます。

どういう機能を果たすプロパティなのか、まずはじっくり観察してみてください。

普段はこの欄は空っぽですが、ここに条件式を入れることで、フォームに表示する情報を絞ることができるんです。
フィルタですからね。そういう役割をします。漉すんですよね。茶漉しみたいに。

きっかけはやっぱり、「コンボボックスから場所名を選んだすぐ後」って感じでしょう。
そう、更新後処理。このイベント作ります。

コードビルダを使ってください。

またまたややこしい構文があります。


Me.Filter = "[場所名]='" & Me![検索] & "'"

Me.FilterOn = True

シングルコーテーションとダブルコーテーションが難しいですが・・ちゃんと一対になってますので、位置に注意しながら入力してください。

もうお分かりですよね。さっき、マクロでプロパティに値を代入したじゃないですか。あれと同じです。
Meというのは[一覧表]フォームそのもののことを指します。
その後ろにピリオドが打ってあるということは、フォームのプロパティであることを指します。
Filterとは、フィルタプロパティのことです。

ここに、「場所名がフォーム内の検索っていう名前のコンボボックスの中身と同じもの」という意味の式を、””でうまく囲んで入力します。
全部""で囲んじゃうと、Me![検索]というコンボボックス名がそのまま検索条件に使われてしまいます。
つまり、「Me![検索]という場所」を探しちゃうんですね。
いくらコンボの中身を渋谷とか新宿とかに変更しても、Me![検索]っていう場所を探しちゃうんです。ばかですねぇ。
だから、Me![検索]はダブルコーテーションの外に出します。
シングルコーテーションは、テキスト型の値の場合、これで囲むように決まりがあるので、うまく含めているわけです。

こういう構文の書き方は慣れですんで、あまり難しく考えずに、カッコや""がちゃんと一対になってるかどうか確認しながら丁寧に入力していくくせを付けましょう。


さて。動きますかね。コンボボックスから"渋谷"を選ぶと・・・???

でも、これだけだと、再び全部表示したい、という場合、困っちゃいますよね。

フィルタを解除します。解除といっても、そうですねぇ。フィルタのプロパティ欄にブランクを代入するようなイメージでいきましょうか。

まず、こんな感じでコマンドボタンを作ってください。
で、これのクリック時のイベントを作りましょう。

と、こんな感じで、フィルタ欄を空っぽにします。ダブルコーテーションを続けてふたつ。スペースは空けません。


Me.Filter = ""

Me.FilterOn = True


さて、どうでしょうか。絞り込みと絞り込み解除、うまく動きます?

フィルタ欄に代入する構文の書き方に抵抗がなければ、フィルタ機能もまあまあイイ線行くと思います。

でも、Me.Filter = "[場所名]='" & Me![検索] & "'"こういう感じの構文を書くのがどうも苦手・・・
という方は、クエリーを用いた方法を極めた方がしっくりくるかもしれませんね。


じゃ、ついでに・・・。
絞り込んだ結果、何件登録があったか、Count関数を使えばすぐ出せます。下のようなテキストボックスを作って、件数を表示させてみてください。

ここまで作っておけば、お店の件数が結構増えても、多少絞り込めるようになりますよね。


■メニュー画面作り

じゃあ、ここいらでメニュー画面を作りましょうか。
フォームをデザインビューで新規作成して、テーブルやクエリーと全然関係のない無地のフォームを作ります。

↑こういうんですね。
色や大きさはお任せします。ただし、コマンドボタンの色は変えられないので、
その点考慮したデザインにしましょう。

なーんつって。いいのいいの。思い切りハデに行きましょうって。