<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97データベース工作室>郵便番号の検索
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15



ほほう、うまくいったですか?じゃ、他の都道府県を検索してみようかな・・・。

あれ?京都に変えたのに、なんかクエリーの方はそのまんまだぞ・・・。

これも何回も登場してますかね。クエリーは、開くときに抽出条件やもろもろ反映させるんです。
なので、開きっぱなしの状態で抽出条件にあたる都道府県のコンボを変更しても、クエリーには伝わらないんです。
なので、もう一度クエリーを開きなおすっていう動作が必要になります。

画面の左上のツールボタンをクリックして、デザインビュー→データシートビューへの切り替え操作を行えば、もう一度クエリーを開いたことにもなるんで、ちゃんと新しい抽出条件が反映された形でデータシートビューが開きますよね。

このことを考慮して、「抽出条件にあたる都道府県が再選択されたら、クエリーを開きなおす」っていう動作を作ってやらないとならないわけですね。

何回かテストしてみて、その辺の雰囲気もつかんじゃってください。


そのへんも踏まえて・・・・。ふたつめのコンボボックスを作りましょう。
おなじみの「値集合ソース」は、いまし方作ったクエリーです。

名前、確認しといてくださいね。あたしのはコンボ2でした。

列幅とか列数とかは、お任せします。とにかくとりあえず[市区町村]が表示されるように調節してみてください。

で、いったんフォームを閉じて、一息いれましょう。




さてー。どうです?改めてフォーム開いて、都道府県選んで、ふたつめのコンボボックス開いてみてください。

出ます?

と???
やっぱり、都道府県の中身変更しても、コンボボックスの中身に反映されないですよね。

そう。クエリーを開きなおさないといけないんです。

では、そこの仕組みを作りましょう。
これもだいたいコンボボックス作るときはセットで出てくるやり方なので、承知しておくとこういうコンボ、作りやすくなりますよ。


都道府県コンボボックスの更新後処理のイベントを作ります。
プロパティのイベント欄を見て、更新後処理の欄をクリックしましょう。

で、ビルドボタンをクリックします。

マクロとコードと、どっちでもできるんですけど、両方お話しますね。
どっちか一方の方法でやってみてください。

おんなじことですので、どっちでもできますよ。

【マクロの場合】  
1)マクロ名をなんかつけます。
2)再クエリーを選びます。
3)コントロール名を指定します。
4)マクロを保存して閉じます。

指定するのはふたつめのコンボボックスの名前です。
えー、あたしのはコンボ2だったんですけども・・・。
【コードの場合】  
コードを入力します。
docmd.requery "コンボ2"
コンボ2は、ふたつめのコンボボックスの名前です。
確認してくださいね。

入力後、このウィンドウだけ閉じます。

さあー。今度はどうでしょう。いちおうフォームを保存して、改めて都道府県を何度か選んでテストしてみてください。今度はちゃんと出てくると思いますよ。といっても、よくわかんないんで、みなさんがお住まいの都道府県とか、知ってる市区町村のある都道府県を主に選んでテストしてくださいね(わざわざ言うことでもないか)

で、確認ができたら、このコンボボックスの値集合ソースをもう一度開いてみてみましょう。

このコンボボックスの中身を基に、3つめの情報として地区名を絞り込みたいんですよね。
これでおわりじゃないんです。ということは、このコンボボックスの先頭のフィールドは、次の地区名を絞り込むために必要なフィールドじゃないとならない・・・っていうわけなんです。

え・・・いまいちよくわからんですか・・・・。確かにわかりにくいとこではありますが、ここはひとつ落ち着いて状況を整頓してみてください。

でもちゃっちゃと先に進んじゃいますぞ。
えー、とにかくこのコンボが基にしているクエリーのフィールドの並びを見て、[市区番号]がこのコンボの中心的存在になってないと、地区名の検索へつながっていかなくなっちゃうんで・・・。でも、今見ると、[都道府県番号]が中心ですよね。

この場合の考え方はふたつあります。

1)[都道府県番号]の「表示」のチェックボックスをオフにする。

 こうしておくと、このクエリーの中で都道府県番号の並びが一番最後になります。

2)コンボボックスのデータプロパティ「連結列」を1から2に変更する。

 このクエリーの中身は替えず、中心となるフィールドの列番を指定してやります。

今回はどちらの方法でもオッケーだと思いますが、もし、今後みなさんがこんな感じの抽出コンボを作った際、参考にしていただければと思います。
今回は1)の方がわかりやすいでしょうかね。んー、でもあたしは2)の方法でいこうかな。


ん?またなんか思いつきました???
「都道府県を何も選ばない状態のとき、市区町村のコンボの方に何も出てこないのは、いやだ」???

だってしょうがないじゃないですか。そういうクエリーにしたでしょう??都道府県のコンボボックスが空欄の状態では、どうしようもないんですよ。
そうそう都合よく動いてはくれないですよ。

えー・・・どうしてもやるんですか??しょうがないですねぇ・・・。

でも、今のままだとやりようがないんで、「都道府県が選択されてたら抽出、選択されてなくて空欄だったら全国の市区町村名を全部出す」という状態になりますけど、それでもいいです?全国の市区町村、3000以上ありましたけど・・・。

まあ、何県の市区かわかんないときもあるかもしれないですもんね。ちょっとややこしいクエリーに書き換えないとイケナイですけど、やってみましょうか。