- ベストアンサー
Access2002 郵便番号から都道府県を算出したい
いつも拝見しております。皆様のお知恵をお貸しください。 Access2002にて、既に存在する【郵便番号】フィールドの値を元に、 【都道府県】フィールドに都道府県名を当て込むという操作を できればクエリで実行したいと思っております。どのような方法が あるでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問の答えと違うかもしれませんが、私も以前同じような事をしたことがあります。 郵便局の「郵便番号」CSVデータをダウンロードして、そのデータを使って都道府県を更新する方法です。 1.住所の郵便番号のダウンロードサイト http://www.post.japanpost.jp/zipcode/dl/kogaki.html (旧郵便番号,郵便番号,カナ都道府県名,カナ市区町村名,カナ町域名,都道府県名,市区町村名,町域名・・・などの内容データです) 全国一括 (1,718,560Byte) をダウンロードする。 注意事項:ダウンロードデータは、CSV(可変長データ)形式のファイルをlzh形式で圧縮して保存しております。 ご使用になられるコンピュータに適合した解凍ソフトをご用意いただき、解凍の上ご使用ください。 2.解凍したCSVファイルをインポート。 ※もし、自分側の郵便番号が"-"を含む8桁(000-0000)ならインポートした郵便番号は7桁(0000000)ですので同じに変えておく必要があります。 その場合は、更新クエリーで 郵便番号を Left([郵便番号],3) & "-" & Right([郵便番号],4) で変更して下さい。 3.更新クエリー(キー:郵便番号)で「都道府県」フィールドを更新する。 以上です。
その他の回答 (3)
- O_cyan
- ベストアンサー率59% (745/1260)
郵便番号変換関数のユーザー関数です。Officeの住所入力支援用辞書Advzip.dicを使って出来ます。 ちょっと長いですが・・。下記を標準モジュールにコピーしてください。 Option Compare Database Option Explicit Private Declare Function zcGetZipDecision Lib "MSYubin7.dll" _ Alias "GetZipDecision" _ (ByVal ZipCode As String, _ ByVal szKen As String, _ ByVal szCty1 As String, _ ByVal szCty2 As String, _ ByVal szTwn As String, _ ByVal szTwnExt As String) As Long Private Declare Function zcYubin7 Lib "MSYubin7.dll" _ Alias "yubin7" _ (ByVal szAddress As String, _ ByVal szZipCode As String, _ ByVal szBarCode As String) As Long Private Declare Sub zcSetHyphenMode Lib "MSYubin7.dll" _ Alias "SetHyphenMode" (ByVal HyphenMode As Integer) ' ------------//列挙定数宣言部//------------- Public Enum enmOcyanZip zcHyphenOn = -1 ' 郵便番号のハイフンモード設定 zcHyphenOff = 0 zcAll = -1 '全て(既定値) zcKen = 0 '都道府県名 zcCty1 = 1 '市1名 zcCty2 = 2 '市2名 zcTwn = 3 '町名 zcTwnExt = 4 '町域以降 zcArray = 5 '要素数5の一次元配列 End Enum Public Function OcyanZip( _ source As String, _ Optional ByVal flag As enmOcyanZip = -1) As Variant ' 変数宣言部 Dim oZip As String * 10 '郵便番号用バッファ Dim oKen As String * 40 Dim oCty1 As String * 40 Dim oCty2 As String * 40 Dim oTwn As String * 40 Dim oTwnExt As String * 500 Dim asRet(4) As String ' 住所用配列 If source = vbNullString Then OcyanZip = IIf(flag = zcArray, asRet, vbNullString) Exit Function End If ' 郵便番号→住所変換 If Val(source) Then Call zcGetZipDecision(source, oKen, oCty1, oCty2, oTwn, oTwnExt) asRet(0) = Left$(oKen, Instr(oKen, vbNullChar) - 1) asRet(1) = Left$(oCty1, InStr(oCty1, vbNullChar) - 1) asRet(2) = Left$(oCty2, InStr(oCty2, vbNullChar) - 1) asRet(3) = Left$(oTwn, InStr(oTwn, vbNullChar) - 1) asRet(4) = Left$(oTwnExt, InStr(oTwnExt, vbNullChar) - 1) Select Case flag Case zcKen To zcTwnExt OcyanZip = asRet(flag) Case zcArray OcyanZip = asRet Case Else OcyanZip = Join(asRet, vbNullString) End Select ' 住所→郵便番号変換 Else Call zcSetHyphenMode(flag) Call zcYubin7(source, oZip, vbNullString) OcyanZip = Left$(oZip, InStr(oZip, vbNullChar) - 1) End If End Function クエリのフィールドで 住所:OcyanZip([郵便番号]) とすると変換できます。 都道府県のみの場合は 都道府県:OcyanZip([郵便番号],0) 定数宣言部で宣言している都道府県にあたる定数0を指定します。 住所から郵便番号にも変換できます。 簡単です。
お礼
御礼が遅くなり申し訳ありません。 回答ありがとうございました。 「標準モジュール」を触ること自体が初めてだったので かなり緊張しましたが、なんとかできました! 確かにこれも簡単でした。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
郵便番号をテーブルに入力と同時に、府県名を出すのはやさしい。 郵便番号ー府県名ー住所のフィールドを作っておく。 テーブル デザインビュー 府県名 をクリック 標準タブ をクリック 住所入力支援 をクリック 郵便番号のボックスの▼をクリック 郵便番号(フィールド) 都道府県と住所の2分割 をチェック 都道府県 府県名(フィールド)を選ぶ 住所 住所(フィールド)を選ぶ 完了 テーブルに入力すると府県名フィールドに府県名が即座に入る。 既に入力が終わっている郵便番号フィールドに対し、上記と同じことをやるのはできるか考えてみます。
補足
回答ありがとうございます。 問題は正に後者なので、なかなか苦戦しております。 お手間でなければ、よろしくお願いします!
- akio_myau
- ベストアンサー率34% (515/1480)
郵便番号支援ユーティリティを利用してはどうでしょうか。
補足
早々のご回答、ありがとうございます。 早速試してみましたが、これは「郵便番号を1件1件入力すると 自動的に住所入力もできる」というユーティリティですよね? 私がしたいのは、他のデータからインポート(数万件)された 郵便番号フィールドの値から一斉に住所入力(都道府県だけ)したい、 ということなのです。説明が足りず、すいませんでした。
お礼
ご回答ありがとうございます。 地道な方法ですが、確かにこれで求めていた作業ができました! ありがとうございます! ただ、ひょっとして他の手段を教えてくださる方がいらっしゃるかもしれないので、 もう少しだけ締め切らないでおこうと思います。すいません。