<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97大魔法陳列棚>魂の住所検索システム



【仕 様 な ど】MS-Access97で作成。Windows95でのみ動作確認。

【ダウンロード】←Zip形式
              (解凍後、mdb初期状態:およそ8.9MB)

【主 な 機 能】

14万件からなる全国の郵便番号データを使って、郵便番号を入力したら住所が出てくるdb

【作 り 方 等】

以前登録していたdbの再掲です。


「炎の郵便番号検索」では、都道府県、住所を選択すると、郵便番号が検索できるようにしてました。で、この逆はありかな、と思って挑戦してみたのです。

ただし、データベースとして扱わなくてもよいのであれば、こういう仕組みは「漢字変換辞書」で提供されるケースがありますね。MS-IME97にも、オプションで郵便番号変換辞書があります。つまり0010011と入力して変換すると、北海道札幌市北区北十一条西という文字列が出てくる・・というわけですね。住所が出てくればいい、ということなら、これでもオッケーかな、と思います。

漢字変換辞書なら、ワープロなどの他のアプリケーションソフトでも利用できますしね。

でもそれじゃハナシがそこで終わっちゃうので、いちおう挑戦してみました。郵政省のサイトの「新郵便番号情報」から郵便番号データをダウンロードして、必要かな、と思われるフィールドだけインポートするところからはじめました。
(郵政省のサイトの場所は、Yahooなどで検索してください。多分、アドレスが変わることもあると思いますので、ここでは掲載はいたしません・・・)

しかし!!!郵政省提供のテキストデータは、同じ郵便番号を持つレコードがいっぱいある!郵便番号と住所が一対一なら、カンタンに検索してこれるのに・・・。

まあ、それはしかたない・・・。2重登録も結構あったんですが、チェックしきれなかったんで、そのまま使いました。


1.住所マスターテーブルを作る。

住所から郵便番号を検索するときと違って、住所フィールドを細かく分ける必要がないので、クエリーを駆使して3〜4つに別れているフィールドを1つの[住所]というフィールドにまとめました。

ぽすたるがいどに掲載されている郵便番号データがそのまんま電子データになったやつなので、私書箱の表記が()かっこ書きだったりして、そのまんま住所データとして利用できないような値も数多くあって、完全な自動化は難しいですね。ほとんど手作業で取り込みましたので、取り込みの段階の細かい解説はちょいと省略です。

でも、下みたいなクエリーのコツをつかんでおくといろいろ便利なので、ちょっとだけ書かせていただきます。

クエリーを使ってフィールドを結合させるやり方はカンタン。インポートしたテーブルを基にクエリーを新規に作成し、

住所:[結合したいフィールドその1]&[その2]&[その3]

と、無理矢理フィールド欄に入力します。これで、このクエリーを実行するときだけ、[住所]というフィールドが作られるのです。

このクエリーをそのまんま使ってもいいんですが、やっぱしこういうテーブルを作っておいた方が何かと小回りが利くでしょう。ツールバーの[クエリーの種類]ボタンを使って、「テーブル作成クエリー」に変更します。

何という名前のテーブルを作ります?と尋ねられるので、そうですね、「住所マスター」とでも入力しときましょう。

で、びっくりマークのツールボタン(赤いビックリマーク。実行ボタン)をクリックすると、じわじわじわじわクエリーが動いて、「住所マスター」というテーブルが作られて、12万件余りのレコードが書き出されます。けっこう時間かかると思います。

で、いろいろいじって、全国の住所の検索ができるテーブルをこしらえました。このデータベースの中には、上記の要領で作成した住所テーブルを使用しています。


2.検索フォームとクエリー

テーブルがどでかいだけで、特別凝ったことはしてません。

ただ最初に述べたように、2重登録やら同じ郵便番号を持つ住所が複数存在するやらで、「郵便番号入力したら、ぽんと住所が」というわけにはいかないようです。

いろいろ考えたんですけど、とりあえずリストボックスに一覧表示し、リストボックスをクリックすることで、値を拾ってくるように作ってみました。あんまり使い勝手よくないですが、ごちゃごちゃやってると検索に時間がかかるみたいなんで・・・。

こんな感じですね。

でも、いろいろ問題が多いですね。もともとこういうデータベースで扱うために用意されたデータじゃないですから・・<郵政省サイトのダウンロード可能なテキストファイルは。

例えば、下の例で行くと、郵便番号0010011の住所は北海道札幌市北区北十一条西の1丁目から4丁目まで。つまりこの1レコードの中に、4つの住所が更に存在しているってことになります。でも、この1レコードを4レコードに分けるってのは、むずかしいというか、デキナイというか・・。どうやってやったらいいか思いつかず、そのまま利用しました。

手書きの資料ならいいですけど・・・。結局()の中身は、人間が目で確認して、修正しないとなりませんよねぇ。

まあ、どこまで自動化させるか、というお話になると思いますが。。。。みなさんはどう思われますでしょう。

姑息な方法ではありますが、フォーム上に住所を取り込んだあと、住所欄の一番右端にカーソルを移動させるようにしてみました。(1〜4丁目)をかたかた消して、1丁目、と自分で入力してね、という意味です。

これくらいは・・・いいんじゃないかと・・・。


これは郵便番号から住所をひっぱりだして入力補佐をするためのサンプルですけど、いろいろな検索の仕組みの参考にしていただけると思います。