<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
MS-Access2002チョ〜入門部屋>コンボボックスを使った絞込みのしくみ | ||
□□□□□□■□ □□□□□ |
オマケのさらにオマケです。
実際に、どういう使い方をしていくか、というところまで、少しだけ足を伸ばしてみようと思います。
■コンボボックスからテキストボックスに郵便番号代入
じゃあ、このコンボボックスの中から、郵便番号を取り出して、別のテキストボックスに入れてみましょうか。
ツールボックスから、テキストボックスのボタンをクリックして(abって書いてあるボタン)、フォーム内のどこかをクリックします。
非連結のテキストボックスができます。私の場合は・・・ テキスト8 っていう名前のテキストボックスになりました。
そしたら、最後に作ったコンボボックスの、更新後処理プロパティで、 「テキスト8に郵便番号を移動する」という処理を作ってみましょう。
コンボボックスってちょっと変わった構造をしてるんですけどね。
「値集合ソース」欄に記したデータ群の中の、
1列目・・・・> コンボボックス名.Column(0)
2列目・・・・> コンボボックス名.Column(1)
3列目・・・・> コンボボックス名.Column(2)
っていう具合に指定することができるんです。Columnっていうのは、コンボボックス特有のプロパティで、半角のドットで区切って入力してやります。
こんな感じですね↑
これで、コンボ6から地区名を選び出したら、コンボ6の1列目の値を(わたしは1列目を郵便番号にしてるので)値をテキスト8に代入しなさい っていう意味の命令になります。
書けたら、VBEのウィンドウは閉じましょうか。
フォームを保存し、フォームビューに切り替えて、テストしてみてください。
コンボ6から選び出したら、テキスト8に郵便番号が入ります???
■リストボックスにしてみる
コンボボックスじゃなくて、別の表示方法がいいなぁ、という場合は、リストボックスにしてみてはどうでしょう。
コンボは簡単にリストボックスに変更できますし、基本的な構造はリストボックスもコンボボックスも同じなので、扱いやすいと思います。
コンボボックスを右クリックして、メニューをたどっていくと、リストボックスに変更できちゃいます。
コントロール名は「コンボ6」のままなんですけどね。まあ、これはこのままでいいでしょう。
書式プロパティを若干変更して、列幅を調節してみてください。2;4と入力すればOKですよ。
cmなんていう単位は自動的につきますからね。
で、さっき作った、「テキスト8に代入する処理」なんですけど、リストボックスに変更したらたぶんいらないと思うんで、動かないようにしましょう。
更新後処理欄の「イベントプロシージャ」という文字を削除して、空っぽにしてください。
ついでに、テキスト8も消しちゃっていいんじゃないかと思います。残しといてもいいけど、使わないテキストボックスが残ってるのも見栄え悪いですもんね。
で、フォームビューにしてみると・・・。
やってることはコンボボックスのときと変わらないんですけど、郵便番号と地区名が横に並んで出てきますね。
近々の地域の郵便番号を何箇所かいっぺんに調べたい場合は、コンボで選ぶより、リストボックスで一覧表示したほうがいいかもしれません。
■サブフォームにしてみる
リストボックスの部分を、サブフォームにしてもいいかもしれないですね。
サブフォームっていうか、クエリ作っといて、クエリの表示結果をデータシートビューで出すんでも、結構使えるんじゃないかと思います。
サブフォームの場合はすぐに切り替えるわけにはいかないので、手作業でいろいろと変えていかないとならないですけどね・・・。
やってみましょうか。
まずは、クエリを新規に作ります。
フォームは出しっぱなしにしておいたほうがいいので、画面の隅っこのほうにでも移動させておくといいでしょう。
クエリの内容は、よっつめのコンボの値集合ソースと同じような感じです。
まあ、考えてみれば、そうですよね。
つながりとしては、フォーム内のコンボボックスの内容が抽出条件になっているので、このフォームが開いてないと、結果を知ることができないクエリ、ということになります。なので、このフォーム、開いておいたままのほうが都合がいいんですよ。閉じちゃうと、クエリ作る分には問題ないですけど、開こうとすると「パラメータの入力」とかいう画面が出ちゃいますからね。
もちろん、コンボボックス名やフォーム名が間違ってても、クエリの結果は出ないです。
フォームがちゃんと開いていて、コンボやフォーム名を正しく書き込みさえすれば、クエリを開いても問題ないはず。
この時点で「パラメータの入力」という画面が出ちゃう人は、クエリの抽出条件をもう一度確認してください。
forms! が全角になってません?
フォーム名は正しい?コンボボックス名は正しい?
抽出条件自体は表示させる必要ないので、非表示にしといてもいいかもしれません。
なんか適当な名前を付けてクエリを保存します。
保存できたら、クエリは閉じちゃいましょう。
で、フォームをデザインビューにして・・・。
リストボックスは削除しちゃいましょう。
ツールボックスから、「埋め込みオブジェクト」ってボタンをクリックして、フォーム内の適当なところをクリックします。
なんか枠ができましたよね。私のは、「埋め込み10」っていう名前みたいです・・・変な名前。
で、この枠のプロパティを見てみてください。
ソースオブジェクトっていうところに、さっきのクエリ名を指定します。
入力するんじゃなくて、一覧から選んでくださいよ。
で、仕上げに、再クエリをしてやらないといけないですね。サブフォームだって同じですよ。
コンボ4の内容を、抽出条件にしてますからね。
既に、前に作ったイベントプロシージャが残ってるので、これを書き換えます。
更新後処理欄をクリックして、ビルドボタンをクリックしてください。
今までは「コンボ6」を再クエリするようにしてたんですけど、もう「コンボ6は削除しちゃってるし、、「埋め込み10」を再クエリするよう、書き換えてやりましょう。
と、こんな感じに↓なります。
データ量が多いときとか、検索した結果、地区名なんかを書き換えていかなくちゃならないときとかは、このスタイルがいいかもしれないですね。
もっとサブフォーム部分のデザインを工夫したい場合は、クエリじゃなくて、フォームを予め作っておいて、そのフォームを埋め込めばOKです。
え?コンボボックスがそろってないので気持ちが悪い?
自分で勝手にそろえてくださいっ!!!