過去の桐井戸端BBS (桐ver.8)
16567 住所のデータから郵便番号を自動的に表示させるにはどうしたらいいのですか 初心者太郎 2002/07/12-18:29
はじめて質問します。
私は桐をつかいかけて約1年ぐらいの超初心者です。

現在、住所録.tblがあります。
これはかなり古いデータで、郵便番号も旧のデータです。
そこで、住所から郵便番号を自動的に表示するには
項目計算式にどのように式を入力すればいいのでしょうか?

住所.tblには 
[氏名],[郵便番号],[住所],[電話番号],[FAX]となっております。
この[住所}には、県名、市町名、町名、番地まで入っています。

よろしくお願いいたします。
16571 Re:住所から郵便番号 しぼうかん 2002/07/12-20:42
記事番号16567へのコメント
こんにちは初心者太郎さん。

私は超がとれたぐらいの初心者ですが(^_^;)

#表引き([住所],=,"住所録.tbl",[住所],[郵便番号])

これでいけると思います。
ただ、項目計算式を使うと古い住所録に無い住所を新しい住所録に入力した時には
新しい住所録の[郵便番号]は強制的に未定義になってしまいますので、
もし今後新しい住所録を追加記入して行く場合は項目計算式ではなくて
編集初期値式に同じ計算式を記入すれば最初に入力するときは古い住所録より郵便番号を表示して、
古い住所録に無い住所の時は新たに郵便番号を入力することが出来ます。

また古い住所録を新しい住所録に移行するのでしたらいったん新しい住所録.tblの
上記の計算式を[郵便番号]の項目計算式に書いて開いた後いったん終了してもう一
度開き直し[郵便番号]の項目計算式を消して項目初期値式に書き直せば移行はかんたんだと思います。

16582 Re:住所から郵便番号 初心者太郎 2002/07/13-18:36
記事番号16571へのコメント
しぼうかんさん、ありがとうございます。
住所には、番地、ビル名等が入っているのですが
これでも大丈夫ですか?
16584 Re.2住所から郵便番号 しぼうかん 2002/07/13-23:54
記事番号16582へのコメント

こんばんは初心者太郎さん

前回お答えした項目計算式を使う場合と編集初期値式を使う場合のどちらの場合でも
古い"住所録.tbl"に[住所]にビル名まで入っているのであれば 新しい住所録.tblの
[住所]に入力した住所がビル名まで一致しないかぎり[郵便番号]は表示されません。

ただ私の場合は住所はビル名まで含めると、例えばはがき印刷時など用紙内に
印刷が収まらなく成る場合が有るため
古い"住所録.tbl"も新しい"住所録.tbl"も [住所1]…県名から番地まで
[住所2]…ビル名 の様に2つに項目を分けています。
この場合は前回の計算式の内[住所]の所を[住所1]に変えておく必要があります。
そうするとビル名を除いた住所だけの一致で古い"住所録.tbl"より[郵便番号]を自動的に表示できます。

16585 Re:住所から郵便番号 佐田 守弘 2002/07/14-04:09
記事番号16567へのコメント
初心者太郎さん

住所から郵便番号の逆引き(私はそう呼んでいます)は、項目計算式で
簡単に書ける程簡単ではありません。
やはり一括処理で行わないと難しいでしょう。
また住所データ次第では必ずしもうまく行きません。
 >この[住所}には、県名、市町名、町名、番地まで入っています
との事ですが、番地まで入っている住所では逆引きは不可能です。

●準備するもの
郵便番号データが必要です。
郵便番号データの元は、郵便局(総務省)のサイトからCSVデータをダウンロードできます。
しかしこのCSVデータを郵便番号表として使える様にするには、変換処理が必要です。
どの様な変換をするかなど、詳しい事は、
http://www.ne.jp/asahi/m.sada/kiri/KIRI7/K7_MENU.html
に掲載してありますので、参考にして下さい。

●郵便番号逆引きのアルゴリズム
まず住所録を開いて、[住所]の値を変数(仮に&住所とします)に代入します。
次に編集表を郵便番号表に切り換え、&住所の値で検索します。
そして検索できたら検索できた行の郵便番号を変数に代入して、住所録に戻り、
この値を郵便番号に書き込みます。
検索できなかった場合には、&住所の文字列から、次の式で右側1文字を削除し、検索します。
 代入 &住所=#部分列(&住所,1,#文字数(&住所)-1)
そして、この1文字減らしながらの検索を検索ができるまで、あるいは、
&住所がヌルストリングになるまで繰り返します。
もしヌルストリングになっても検索できなかった場合には、
該当なし、または住所の記載エラーとして処理します。

●逆引きができるための条件
郵便局のCSVデータに記載されている通りの書式で住所が書かれている事が大前提です。
「四谷」と「四ツ谷」、「一番街」と「壱番街」など記述が違うと検索できません。
また、〒064-0820は「札幌市中央区大通西20〜28丁目」ですから、
札幌市中央区大通西21丁目は、検索できません。
これ以外にも住所の記述はかなりまちまちですから、
郵便番号で表引き入力したデータでない限り、記述が一致しないために
うまく検索できない場合の方が多いと思います。
もちろん、そういった記述の振れをあいまい検索するアルゴリズムも作れない訳ではありませんが、
かなり複雑になります。

●住所データは正しいでしょうか
現在の住所データは旧郵便番号時代のものだとすると、
住居表示自体が変わっていて、現在はその様な住所が存在しない事があり得ます。

●実用的な方法として
上記の理由で、一括処理で機械的に変換するのはかなり難しいと思います。
一括処理あるいはイベントを使いながら、会話処理で1件ずつ確認しながらの変換をせざるを得ないでしょう。
つまり、まず現在の住所録の[住所]のデータを使って、郵便番号を逆引きします。
逆引きができたら、念の為にその郵便番号から住所を表引きし、
記載されている住所が合っているかを確認します。もし間違っていたら、
その段階で住所記述を直します。

●参考までに
「桐で作る住録」
http://www.ne.jp/asahi/m.sada/kiri/JUSHO/JUSHOTOP.html
には、以上の様な方法で1件ずつ住所から郵便番号を逆引きする仕組みを組み込んであります。

佐田守弘(KS-00119)
16586 Re:住所から郵便番号 初心者太郎 2002/07/14-13:48
記事番号16585へのコメント
みなさん、ありがとうぼざいます。
出来ないようですね。
残念ですが、手動でします。
ありがとうございました。
16596 Re:住所から郵便番号 桐桐舞子 2002/07/15-17:47
記事番号16586へのコメント
初心者太郎さん


手動は大変ですね。私がした方法は手動に近いのですが、
ある程度データーがあるのでしたら、はがきソフトにCSVで書き出して、
番号を引っ張ってきてまた、桐に戻すという方法でしてみました。
住所禄は結構はがきソフトもよく出来ていますよ。
ちなみにソフトは筆まめです。
番号を調べるよりは簡単ですが・・・あまり役には立たないコメントですみません。

16606 Re:住所から郵便番号 初心者太郎 2002/07/16-07:41
記事番号16596へのコメント
桐桐舞子さんはじめまして。
はがきソフトって他データも読めるんですか?
それは便利ですね。
16628 Re:住所から郵便番号 桐桐舞子 2002/07/17-10:36
記事番号16606へのコメント
初心者太郎さん


勿論、読めますよ。結構お利巧で、データベースもなかなかのものです。
ただし、桐からテキストで書き出すんですけど。。。
住所禄を作るときは、反対にはがきソフトに入力してから、桐にひっぱった方が簡単かも。。。。是非お試ししてみては・・・

戻る