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



さて、[郵便テーブル]を削除し、[都道府県テーブル][市区町村テーブル][地区テーブル]の3つのテーブルに小分けして、それぞれ[都道府県番号]や[市区町村番号]といった番号でなんとかつながりが持てるようになりました。つながってるわけじゃないですけども、まあ、そんな感じ。

で、このデータベースを再び「最適化」してみますと、

私のは結構コンパクトになりましたよ。
効果てきめんじゃないですか。みなさんはいかがでしょう。
必ずしもぴったり同じってわけじゃないし、数字自体はアバウトだと思いますけど、ファイルサイズ小さくなってると思いません?


でも、必ずしもテーブルを分けることがよい、ということではありません。
まずデータベース全体を見渡して、まとめられそうなもの、まとめた方が処理が便利になりそうなところを見つけて、いろいろな角度からシュミレーションしてみてください。
テーブルを小分けすることで返って使いにくくなったり、盛り込みたかった処理ができなくなったりしてしまっては本末転倒ですよね。
本来、リレーション・シップなんてものは「こう作ればもっと便利かも」という発想を持つことで、自然に導かれていくはずなんです。
「リレーション・シップにしなきゃ」なんて発想から始めないで、とにかくみなさんお手持ちのテーブルそのものを見詰め直してみてください。
答えは絶対その中に潜んでますよ。

みなさんもご自身で作っておられるデータベースのテーブル、見直してみて、まとめられそうなデータはうまくまとめて、データベース内の情報効率アップをはかってみてください。


さあて、なんだかもう疲れちゃいましたね。やめちゃおうかな・・・。

あ、スイマセン。がんばります。
・・・では、次に「都道府県、市区町村を絞り込んで、該当する住所の郵便番号をゲットする」という仕組みを作ってみましょうか。

コンボボックス2段重ねで、絞り込んで絞り込んでいく仕組みですので、何か他のデータベース作りの中でも活用いただけると思いますよ。

コンボボックスはみなさんもうオッケーでしょうか。ツールボックスの中に「コンボボックス」っていうボタンがありますよね。
それクリックして、フォームの中クリックすれば、適当な大きさのコンボボックスができます。

そしたらそれのプロパティを出して、「値集合ソース」欄にさっき作った[都道府県テーブル]を持ってきます。

で、フォームビューにしてみましょう。いいからいいから。

↑これですね。

んん???なんか出てきますけど、なんじゃこりゃ・・・・。
おお。落ち着いてよく見てみれば、都道府県番号じゃないですか。
でもこれじゃあ、どれがなんだかわかんないし・・・。

そしたら、もう一回デザインビューに戻って、このコンボボックスのプロパティを見ましょう。
いろいろ設定するところが出てきますけど、だいたいどれもセットですから、パターンとして覚えてしまうといいと思います。

まず、コンボボックスの中に表示される「列」を左右するのは、書式プロパティの「列数」というところの値です。

通常は多分1になってるんで、ここを変えます。
えーと、[都道府県テーブル]の内容を思い出してくださいね。
[都道府県番号][都道府県名カナ][都道府県]の順でしたよね。
で、必要なのは[都道府県]。[カナ]は表示しないでもいいですかね。
でも、存在はしていることになるんですよ。

そこで、列数はになります。



それと対応するように「列幅」の設定をします。「カナ」を表示したくないなら、1列めと3列めだけの表示になりますよね。
表示の幅をセンチメートル単位で適当に、(セミコロン)で区切って入力します。

私は1;0;2.5と入力しました。cmという単位は、勝手に付きますので入力する必要はありません。

で、コンボボックスの幅をそんなに広げたくないけど、2列3列って並べて表示したい・・・というときは、「リスト幅」というプロパティをうまく活用してみましょう。

目安は今回は、1+2.5+0.5くらいかな。えー・・・。

1+2.5は、いいですよね。列幅で指定した分。で、だいたい右端にスクロールバーが付くので、その分を少し上乗せして0.5
足した数を「リスト幅」に入れます。
コンボボックスの幅と、リストの幅が同じでよければ(横向きスクロールバーも出ますからね)、ここは「自動」のままでよいでしょう。

そして、「リスト行数」。これはその名の通り、リストに表示される行数をあらわします。
だいたいふつう8行なんですけど、ここもデータ量やフォームの大きさによって調節するといいと思います。

今度はどうでしょう。出ます?

コンボボックスの「書式:列数、列幅、リスト幅、リスト行数」は、セットで使うように覚えてしまうと効率よいと思います。

なんか選んでみましょう。動きはどうですか?ん?
コンボボックスの中身が、01とか02になっちゃう?わかりにくいですかねぇ。

リストは複数表示できますけど、コンボボックスの中には、いっこしかデータ表示できないですからね。
都道府県番号か、都道府県か、どっちかってことになりますが・・・。

じゃあー・・・列幅を、0;0;3にして、都道府県番号も隠しちゃいましょうか。
これはただ表示のお話だけなんで、どっちでもこれから後の操作に変わりはないです。どっちでもオッケーですよ。

あとはコンボボックスの大きさや位置、ラベルの内容などを整えて、完成です。

コンボボックスの名前を変更した方がもしかしたら後々わかりやすいかもしれないですけど・・・。「都道府県選択」とかね。
まあ、でも、今回はいいかな。あたしの作ったコンボボックスはコンボ0って名前でした。ゼロは半角だな。こりゃ。

で、このフォーム、なんか適当な名前をつけて保存してくださいね。フォームを閉じて一息いれましょう。


これでひとつめのコンボボックスができました。

ふたつめに、市区町村の絞り込みをしようと思うんですが、これは、クエリーを作ります。
クエリーの要素としては「フォームのコンボボックスの中の値と同じ都道府県番号を持つもの」という抽出条件が付くわけです。
まずどんな感じのクエリーになるか、イメージしてみてくださいね。

うーん、そうだな、クエリー名はQ_市区町村とか、そんなのにしましょうか。

こんな感じかな。あたしは横着してフォームの名前を[フォーム1]の状態で保存したんでこんなになりました。
この書き方、みなさんもう慣れましたですよね。

forms![フォーム名]![その中のコントロール名]

へへ。じゃ、ちょっと難しい表現をば・・・・
フォームの中にあって、テキストボックスとかコンボボックスとかサブフォームとか、処理の対象となるものを総称してコントロールと呼びます。
コントロールって何かってより、魚屋に並んでるものをさかなって呼ぶのと同じですね。
いわしとかあじとかさばっていうさかなはあるけど、さかなっていうさかなはないですもんね。でも、全部さかな。脱線問答みたいだ(笑)。

んで、このクエリーを開くと・・・。およよ??????????

なんじゃこりゃー!!
これは、パラメータ入力のボックスですよね。
フォーム1が開いてないから、こんなのが出るんです。

白い枠の中に都道府県番号をなんか入力すれば、クエリーの結果、ちゃんと出てきますけどね。
01とか、東京なら13とか・・・。

でも、何にも入力せず[OK]をクリックすると、都道府県番号がNullのレコードを探して、ないので玉砕してこんな状態のデータシートビューが開いて出てきます。

ま、最初はこんなもんですよ。青い三角定規クリックして、もとに戻りましょう。

フォームをそーっと開いて、都道府県をなんか選んで、その状態でこのクエリー開けば、ちゃんとゲットしてくると思いますよ。
そーっとね。まだ半熟テスト中ですから、そーっとテストしてください。

このフォームが開いていて、都道府県のコンボボックス(あたしの場合はコンボ0)になんか都道府県名が選ばれてる状態で始めて働くことができるクエリーですもんね。

コンボボックスの中の表示が[都道府県番号]でも[都道府県]でも、このコンボボックスの中身を制御しているのは[都道府県番号]なんです。
それはどこで見るかっていうと、コンボボックスのデータプロパティの「連結列」っていうところ。
1になってますよね。ということは、1列め、つまり[都道府県番号]が、実際にはコンボボックスの値っていうことになるんです。
ここが変ってなければ、列表示を書式で変更しても問題ないんですね。

コンボボックスとクエリーのつながり、ちょっとややこしいですけど押さえておくといろいろ応用が利きます。
整頓してぜひ活用なさってみてください。