<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002チョ〜入門部屋>基本をマスターしよう
  (←別ウィンドウでサブメニュー)



18.フィルタプロパティ

だいたい、フォームの作成に関しての基本操作はお話できたかなーと思うんですけどね。
ここまでのところ、いかがでしょう?
まだ、何がなんだかよくわからない・・・という方もあるかもわかりませんね。
でも、こうやって、テーブルを作り、クエリを作り、フォームを作って・・・と、これが、MS-Accessを使ってデータベースを作っていく作業過程になります。全体像がつかめるようになるまではもう少し時間がかかるかもしれませんが、あせらず、とにかく各オブジェクトの役割をじっくり見ていきましょう。がんばりましょう!

で、次のオブジェクトの作り方・・・といきたいとこなんですが・・・。
ちょっと寄り道して、この表を使って、ちょっとした「絞込みの仕組み」を作ってみましょうか。
たとえば、部署ごとに絞り込むとか、ペンだこがある人だけの表示にしてみるとか。よくあるじゃないですか。そういうの。
まだ今の時点ではわかりにくい操作かもしれませんが、そういう作りこみの雰囲気をつかんでみるのもいいかなと思うんです。
少し、挑戦してみます?

「絞込みの仕組み」にはいろんな方法があるので、今回ご紹介するのはそのうちのひとつってことで理解してくださいね。
ほんとは、さっきやった「クエリ」っていうオブジェクトをうまく活用したほうがわかりやすい仕組みを作ることができるんですけど・・・・。それはまた別の機会にやるとして、今日は雰囲気だけ味わってください。
同じようにできなくても今日のところはそれでよしとしましょう。



フィルタという機能を使って絞込みをしてみます。
フィルタとは、フォームのプロパティのひとつで、このフォームにどういうレコードを表示するか、という絞込みの条件式みたいなのを指定できるものなんですけどね。その、式っていうのが、いわゆるSQL文ってやつを書く必要があるわけなんです。正確には、SQLのWhere句っていうのを書くんですけど・・・。
SQLが書ければすぐできるんですが、SQLがわからない人にとってはちょっと難しい方法だと思います。
とりあえず、おんなじように挑戦してみてください。

じゃあ、まずちょっと確認を・・・。
フォームのプロパティを見てみてください。
データのところにフィルタとフィルタの使用っていうプロパティがあると思います。使うのはこの二つです。

実はわたしの画面だと、フィルタのところにすでに何か式が入ってるんですけど、皆さんの画面ではどうですか?
これは、前に、データシートビューの説明のところで1回、フィルタの機能を使ってるからみたいなんですよね。
ほら、少し前のページで、フィルタについてお話したじゃないですか。
どうやらあのときの操作をテーブル自体が記憶してて、フォームをオートフォーム機能で作るとき自動的にこんなふうに反映させてるみたいなんですよ。
まあ、こういうのはあまり気にしないで・・・。とりあえず、消しちゃってください。

では・・・。
フォームの一番下のところに仕掛けを作ろうかな・・・。
「フォームフッター」と書いてあるあたりを、そっとした向きにドラッグしてみてください。
「フォームフッター」というエリアができます。
そうだなぁ、高さ1cmくらいあれば十分かしら。

で、ここに、コマンドボタンをひとつ作りましょうか。
ツールボックス↓から「コマンドボタン」をクリックします。

で、今広げた「フォームフッター」部分をどこかクリックすると、コマンドボタンができますよね。

別に「コマンド12」でなくてもよいですよ。
でも、なんていう名前のコマンドボタンができたか、は、ちらっとだけ確認しておいてください。

このコマンドボタンをクリックしたら「ペンだこがある人」だけを表示するようにしてみましょう。
まあ、今回は練習ですから、雰囲気だけってことで。

「このコマンドボタンをクリックしたときに実行されるべき命令」を作ります。
じゃあ、いっしょにやってってみましょう。
このコマンドボタンのプロパティを見てみましょう。

「クリック時」っていうのがありますよね。
このボタンをクリックしたら、どうすればいいのか、あらかじめここに指示をしておいてやるんです。
で、具体的にどうすればいいかというと、まあこれもいろんなやり方があるんですけど、今回は非常にシンプルに・・・。
一番右端にある、ちっさい点が3つ書いてあるボタンをクリックしてください。こういうボタンをビルドボタンといいます。

そうすると、「どういう方法で、作りますかのう」って聞いてきます。
今回は、コードビルダってのを使いましょう。

そうすると、別のウィンドウが開いてくると思います。↓こんな感じの。

このウィンドウのことを、Visual Basic Editorといいます。コードビルダってのを選ぶと、このウィンドウが出てくるのです。
そう。これは、Visual Basic for Application(VBA)という言語を使って何か処理を作るときに使うエディタです。
コードっていうのは、いわゆるVBAで書いたプログラムの構文のことです。
これから、コードを書きます。なんでかって?
だからー、「このボタンをクリックしたらペンだこがある人だけを表示しなさい」っていう命令を、書くんですっ。

といっても、すでに「このボタンをクリックしたら」というところは、できてるようなもんなんです。

なので、↑この2行の間に、「ペンだこがある人だけを表示」っていう命令を書けばいいんですね。いろんな書き方が考えられるんですが、今日は、さっきちょっと見ていただいた「フィルタ」っていうプロパティを利用しようと思います。

  このフォームのフィルタというプロパティに、ペンだこがあるひとだけ表示、という意味の式を代入する

のです。

  このフォームのフィルタプロパティに ペンだこ = Yes という式を代入する

と、こういう感じになります。さらにプログラミングっぽく考えて、「という式を代入する」ためには、ペンだこ=Yes という式をひとつの塊としなくてはなりませんので、

  このフォームのフィルタプロパティ = "ペンだこ=Yes"

と、こうなります。
ダブルコーテーションで囲むと、「ひとつのまとまった文字列」という意味合いになります。
こういうのは、MS-Accessの操作ともまた違う、ちょっと要領のいるところなので、ゆっくり慣れていきましょう。
今日は雰囲気だけつかんでいただければオッケーです。

さらに、「このフォームのフィルタプロパティ」というのは、

  Me.Filter = "ペンだこ=Yes"

となります。Meというのは「自分自身」ということで、「今開いてるこのフォーム」のことです。
ほんとはフォーム名とかもちゃんと指定してあげないとならないんですが、Meっていうのが使えるところなら使ったほうが、どうやら内部的にも処理がスムーズみたいなんですよね。
電話かけてきて、「わたしだが」って言う人、いるじゃないですか。社長とか。ぜんぜん知らない人だと「わたしとは、どなたですか?」ってことになっちゃいますが、社内で、名前を名乗ったり部署名名乗ったりするような面倒なこと言わなくてもすむなら簡単に会話したいですよね。Meってのはちょうどそんな感じです。

かな漢字変換の機能はオフにしておいたほうがよいでしょう。



まず、Meって入力してください。全部小文字でいいですよ。ただし半角です。
次に、ピリオド(ドット)を入力します。すると、なんかリストが出てきます。

いっぱいなんか出てきましたけど・・・。これは、このフォームのプロパティとかの一覧なんです。
全部アルファベット(英語)で書いてありますけどね。この中から「フィルタ」ってのを探さないといけないんですが・・・。
大変なんで、アルファベットの「F」を入力してみましょう。

あったあった!
キーボードの下矢印キーを押して、Filterというところを青くしましょう。
で、Tabキーを1回押します。

ここまでオッケーですか?
分けわかんなくなっちゃったら最初から挑戦してみてくださいね。
少しずつ慣れてってください。

次に、このプロパティにどういう値を代入したいのか、ということを書くんですが、忘れないうちに、イコールと、ダブルコーテーションふたつを入力しちゃいましょう。

で、二つのダブルコーテーションの間に、ペンだこ=Yesと書いてください。

下矢印キーを使って、カーソルを1行下に移動してみましょう。
どこかほかのところをクリックするのでもよいです。
でもEnterキーを押すと途中で改行されちゃうのでEnterキーは押さないでくださいね。

微妙にスペースがあいたと思うんですけど、これでとりあえず1行完成です。

同じような要領で、「このフィルタを有効にする」みたいな文を1行書きます。
フォームの場合はこれなくても動くことは動くんですが、いちおう書きましょう。
2行目の一番右端にカーソルを置いて、Enterキーを押すと、1行あきますよね。

今度は、FilterOnっていうやつです。ありました?↓

Tabキーを押した後、イコールを入力すると、なんか小さな四角枠が出てきます。

下矢印キーを押してTrue(Yesとおなじようなもん)のほうを選んで、Tabキーを押しましょう。

これで、コード入力完成です。
そしたら、Visual Basic Editorのウィンドウだけ閉じましょう。

じゃあ、いちおう、フォームを上書き保存(左上のフロッピーディスクボタンをクリック)して・・・。
フォームビューに切り替えて(一番左上のツールボタン)みてみましょう。

今作ったコマンドボタンをクリックすると、どうなります?

絞り込まれました?
エラーになっちゃったり、何の反応もない、って場合は、コードの書き方がどこか違うんだと思いますよ。
でもまあ、今日は練習なので、ここでできなくてもどうってことないです。
徐々に慣れていきましょう。

フィルタをやめて、全件表示させたいときは、「フィルタを解除」する必要があるんですけど、まあ手っ取り早いのは、ツールボタンの中の「フィルタの解除」ボタンをクリックすれば、元の状態に戻ります。

でも、もっとかっこよく、コマンドボタンをクリックしたらまた全件表示されるようにしたい、なんて場合は。。。
もうひとつ、コマンドボタンを作って、そのボタンのクリック時のイベントに下のようなコードを書いてみてください。

何事も練習です。気楽にチャレンジしてみてくださいね。