![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access2000 TOP <サイト内検索 | ![]() |
|
![]() |
||
Access97データベース工作室>郵便番号の検索 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
じゃ、Q_市区町村を書き換えます。
えと、右の方の空いてるグリッドに、直接下のような式を入力してみてください。
長いですけど、途中で区切ったりしないで、続けて一気に。式1:っていうのは後から自動的に付きますから、Iifから後ろだけね。
IIf(IsNull([forms]![フォーム1]![コンボ0]),True,[都道府県番号]=[forms]![フォーム1]![コンボ0])
ええと、iif関数っていう関数と、IsNull関数と組み合わせてつかってます。関数の詳しい使い方はヘルプを参照してくださいね。
で、抽出条件にTrueって入れます。
意味合いはサーカスみたいなことなんですけどね。
もし、コンボ0がNullだったら、このフィールドは全レコードTrueって表示しなさい、それ以外の場合は、都道府県番号がコンボ0と同じレコードだけ表示しなさいっていう、いんちきっぽい処理をさせる関数になるんです。
で、コンボ0がNull、つまりなんも選択してない状態だと、この式1っていう作りもんのフィールドには、だーっと3000なんぼレコードにTrueって文字が表示されます。
で、抽出条件がTrueだから、全件選択されるっていう裏技。
よく使われてるテクニックみたいなんですけど、あたしゃいつもおっかなびっくり使ってます(笑)
すると?????
都道府県を選ばない状態で、市区町村の方のコンボを選ぶと、日本全国津々浦々市区町村名がずらーっと出てくるって仕掛けです。
3000以上ありますけど、まあ、アイウエオ順にしたりすればまあまあ見やすいんじゃないですかね。
右側に[カナ]を3桁分くらい出してもいいかもしれないですね。
例えば、Q_市区町村のクエリーをさらにちょっといじって
赤い記しつけたとこをクリックしてからそーっとドラッグすると、列の移動ができますから、カナを[市区町村]の右に移したりします。
そーっとドラッグしましょう。
それで、この[市区町村名カナ]のフィールドを利用して、左から2桁か3桁くらい取り出してしまおうと思います。
コンボボックスの表示用にね。それと、並べ替えするだけなら、先頭から3桁くらいあればいいかなーなんて思うんですけども・・・。
Left([市区町村名カナ],3) ←こうですね。
並行してコンボボックスの書式も整えておきます。
列ずらしたりしましたんで、列幅を調節。
あたしは今、Q_市区町村クエリーが上のような状態になってて、コンボボックスのデータプロパティの連結列を2にしてます。
なので、列幅は←こんな感じ。
あたまただれてきそうですけど・・・
ちゃんとみんなつながりがありますんで、押さえといてくださいね。
そうすると・・・ほらほら。市区町村名のカナがあたま3文字だけ出て、目安になるでしょ。
アイウエオ順がいやなら、[市区番号]の昇順に並べ変えて、左側に[市区番号]が表示されるようにしてもいいんじゃないかと思います。
なに、市区町村の数を、どっかに表示したい?なるほど。やってみましょうかね。
このコンボボックスの中身は、Q_市区町村ですよね。
じゃ、このクエリーの件数をどっかに出せばいいんじゃないかと思います。
適当な大きさのテキストボックスを作って、コントロールソース欄にこんな式を入力してみます。
=dcount("数えるフィールド名","数えるテーブルかクエリー名")
でぃーかうんと関数という関数で、指定されたテーブルかクエリーの中のレコード件数を数えるときによく使われます。
と、今回は、
=dcount("市区番号","Q_市区町村")
こうすると、クエリーの中のレコード件数がこのテキストボックスに表示されるって寸法です。
ついでにもう一工夫して、
=dcount("市区番号","Q_市区町村") & "件あるね。"
と、うしろに&で結んでダブルコーテーションで囲んだ文字列を書き込むと、xx件あるね。という表示になります。
ちょっとおもしろいでしょ。いろいろ工夫してみてください。
ね。出てくるでしょ。
ん?のっけから頼みもしないのに表示されてるのはヘン?
うーん・・・。
じゃあですねぇ・・・。市区町村のコンボボックスにさわったら、件数を出すようにしてみましょうか。なあに。このテキストボックスを隠しちゃうって手がありますんで、ご紹介します。
まず、このテキストボックス、フラットな表示にしたり背面の色を透明にしたりして、他のテキストボックスと差をつけてみました。
この辺はお好きなように・・・。
このテキストボックス以外のものもみんなそうなんですが、表示されるか見えなくなるかは、書式プロパティの中の可視というところの設定によりけりなんです。
この「可視」というプロパティが「いいえ」になると、つまりFalseになると、このコントロールは見えなくなる、ってことなんです。
でも、削除されたわけではなく、存在はしてるんですね。
ほほほ。キレイさっぱり見えませんわ。
これをうまく活用して、市区町村のコンボボックスをいじるまで可視=False、いじったら可視=Trueっていう処理を考えてみます。
この状態(可視=いいえ)にしておいてくださいね。これがフォームを開いたときの状態です。
このコンボボックスのどっかのイベントに、コードかマクロを書きます。
どっちでもできるんですけどね、とりあえずコードでお話します(説明が楽だから)
えーと、なにやったときにしましょうかね・・・フォーカス取得時っていうイベントにしてみるかな。
クリック時でもいいかもしれないですが・・・・・・・・どっちでもいいか。
Private Sub コンボ2_Enter()
Me![テキスト8].Visible = True
End Sub
あたしの場合、このテキストボックス、[テキスト8]っていう名前なんで、こういう書き方になりました。
Visibleっていうのは、「可視」の正式名称です。コントロール名の後ろにピリオド打つと、そのコントロールのプロパティっていう意味になるんですね。
んじゃテスト。
最初は何にも出てませんけど、市区町村のコンボボックス触ると、数字が出ますよね。
それから後は、都道府県選びなおしたりするたびに数字が変って、対象となる市区町村がいくつあるか表示するようになると思います。
これも結構使えそうでしょ。いろいろと。ポイントは「いつ可視をTrueにするか」という、イベントの選び方ですね。
これはいろいろ研究を積んでいく必要がありそうです。
えーと・・・・。なにやってたんでしたっけ・・・えー・・・・。
あ、そうだ。郵便番号だ!まだ市区町村の絞り込みまでしかできてないんだった。いそがなくっちゃ。
![]() |
![]() |
![]() |