<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--絞込みの仕組み(初級)
 [まずは基本となるフォーム作り]   [クエリーを使う場合1] [2]   [フィルタを活用する場合]   [コンボボックスに変更] 



では、クエリーは保存しながら一応閉じましょう。

名前はなんでもいいですけども、わかりやすいの付けてくださいね。わたしは「グループで絞るクエリー」という名前を付けました。

ではでは、仕上げです。

「見やすいフォーム」をデザインビュー状態にしましょう。左上の青い三角定規ボタンですよね。

フォーム全体のプロパティを見ます。左上の、フォームセレクタって呼ばれる場所、この図でいくと赤い印をつけてるところをダブルクリックかなんかすると、フォーム全体のプロパティがどっかに出てくると思います。出てきました?

出てきたら、「データプロパティ」を見てやりましょう。

「レコードソース」ってとこがあって、今は一番最初に作ったテーブルが指定されてますよね。

ここをね、今しがた作ったクエリーに変えるのです。

変更は、緑色の印をつけたとこのリストボタンで、簡単にできます。変えてみてください。

ただ、このとき気をつけなくてはならないのは、各テキストボックスとレコードソースとなるテーブルやクエリーのつながりは、やっぱり「名前」なんだってとこです。

各テキストボックスには[番号][名前][グループ][金額]というフィールドの値が出るようになってます。

レコードソース欄を、別のテーブルやクエリーに変更した場合、変更したテーブルやクエリーに[金額]ってフィールドがなかったら、#NAME?とかいって、わけのわかんないエラーになっちゃいます。ないものは出せませんもんね。

だから、後からレコードソースみたいな大事なプロパティを変更するときって、気をつけないといけないんですよ。

今回は、確か、「グループで絞るクエリー」の方でも、[番号][名前][グループ][金額]の4つのフィールド、選んでましたよね。下の図の赤い四角枠のとこと、上の図の赤い四角枠のとこ、見比べてみてください。


さて・・・とりあえずこれでどうかな・・・。フォームビューに切り替えて・・・・。

ありーなんか一件も出ないじゃん・・・って、つまり、「グループ」で絞り込むクエリーが基になってるからですよね。
今、「へのへのもへじ」が空っぽなんで、何も出ません。

でも、なんか入力しても、多分何も出ないと思います。そう、さっきお話した「再クエリー」ってやつをやらないと。。。

んでは、再クエリーの指示を出すための方法です。

いろいろ考えられると思いますけど、わたしはだいたい「へのへのもへじのテキストボックスに何か書き込まれた後」再クエリーするようにしてます。具体的には、マクロかVBAコードで「再クエリーしろ」という命令書を作って、「へのへのもへじ」の更新後、命令が実行されるようにします。

これが一番スタンダードなやり方じゃないかなぁ。とりあえず何にもでないんでは話にならないですもんね。やってみましょう。


テキストボックス「へのへのもへじ」のプロパティを出しましょう。こいつの「イベントプロパティ」ってとこを見ます。

いっぱいいろいろありますけど・・・「更新後処理」ってありますよね。更新前じゃないですよ。「更新後処理」です。

すると、上の図のように小さいボタンがふたつほど出てきましたよね。右側の[]ってボタン(ビルドボタン)をクリックしましょう。

すると、「あ、へのへのもへじ更新後に動かしたい命令をお作りになるのですね?かしこまりました。で、どのような手段を用いて作成なさいますか?」と聞いてきます。
どこにも書いてないですけどそう聞かれてるんですっ。

「このとき、こうしなさい」という命令書は、マクロかコードを使って作ります。コードというのは、いわゆるVBAってやつですね。
まずはマクロで作ってみましょう。マクロビルダを使います。

まだ何もやってないですけど、いきなり「マクロに名前を付けて保存しろ」と言ってきます。しょうがないので名前を付けましょう。

わたしは「へのへのマクロ」にしました。

今回は、「へのへのもへじテキストボックスの中に何か文字が入力されてEnterキーが押されたら、フォームのレコードソースとなっているクエリーを再クエリーして」という命令を作らないとならないんですけど、ここで作るのは「再クエリーして」って部分ですね。
マクロアクションの一覧から「再クエリ」ってのを探してください。

ありました?

下のほうの「アクションの引数」というところを見ると、なんか入力する欄がありますけど・・・。今回は、フォームのレコードソースとなっているもんを再クエリするんで、空欄のままでけっこうです。この引数に何を入力するのか、どういうとき入力が必要なのかは、また別の機会にお話できると思いますので・・・。

ほい。これでおっけー。テキストボックスの内容が更新されたら、へのへのマクロが動きます。

もし、マクロじゃなくてコードを書きたい・・・という人は、コードビルダを選んで、

 DoCmd.Requery

ですね。マクロで再クエリアクションを実行するよう指示するのと同じことですが、コードで書くとこうなります。


さあ、どうかな・・・。

フォームをとりあえず上書き保存して、フォームビューに切り替えましょう。あるいは保存しながら閉じて、もう一度開いてもよいです。
で、なんかグループ名を入力してください。

出たー♪

ね?ね?ちゃんと動いたでしょう?
んじゃ、さらに、他のグループ名を入力してEnterキー押してみてください。
そのグループだけの表示に切り替わるかな・・・。

いちおう、これがクエリーを使った絞込みのしくみの基本形です。

これを土台にすれば、いろんな検索の仕組みを作ることができそうですよね。もちろんもっと複雑な条件を作らなくちゃならないこともあるでしょう。でもでも、ポイントはやっぱり「名前」です。どれとどれがどういうふうに関連しているのか、その辺しっかり押さえていただければ、少々複雑なフォームになってもわけわかんなくなったりしないと思いますよ。