Access-郵便番号と住所の整合チェック

このQ&Aのポイント
  • Accessにて顧客管理システムを作成しています。連結サブフォームでの入力項目の郵便番号には住所の自動入力を設定していますが、住所を入力者が変更した場合には別途チェックを行い、DBにフラグを付けます。
  • 質問者はAccessを使用して顧客管理システムを作成しています。連結サブフォームでの郵便番号入力に自動入力機能を設定していますが、入力者が住所を変更した場合には郵便番号との整合性をチェックし、フラグを付けて保存処理を行います。
  • Accessで顧客管理システムを作成中です。連結サブフォームの郵便番号入力には住所の自動入力が設定されていますが、住所が変更された場合には郵便番号との整合性を確認し、フラグを付ける処理を保存時に実行します。
回答を見る
  • ベストアンサー

Access-郵便番号と住所の整合チェック

お世話になります。 Accessにて顧客管理システムを作成しています。掲題について、連結サブフォームでの入力項目の郵便番号には入力支援として住所の自動入力は設定しています。 ただ、その郵便番号入力後 住所を入力者が変えた時、郵便番号と異なる場合のチェックを保存処理のボタンを押したタイミングでDBに予め用意したフラグフィールドに付けたいです。 このチェック方法をVbaのコードで示して頂けると助かります。どうかよろしくお願いいたします。 ※住所から郵便番号を自動入力で変えるということは考えてません。郵便番号と住所、どちらが正しい情報なのか区別するため、ただ一致しないという判別をつけるだけであとで入力者本人に確認する運用にします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

【訂正】[住所X_控え]は不要! 添付図通りに[住所1_控え]、[住所2_控え]を用意し、もって比較し[住所不一致]を更新するコードを書いてみました。そして、実際に試した場合、一旦、別のレコードに移動した場合に[住所1_控え]、[住所2_控え]を再現する必要があることに気付きました。そうしないと、新たな[住所1]、[住所2]との正しい比較が出来ないからです。 Private Sub Form_Current()   If Me.NewRecord Then     Me.住所1_控え = ""     Me.住所2_控え = ""   Else     Me.住所1_控え = ZipConv(Me.郵便番号, zcKen)     Me.住所2_控え = ZipConv(Me.郵便番号, zcCty1) & ZipConv(Me.郵便番号, zcCty2)   End If End Sub そこで、某サイトのZipConv()を利用して[住所1_控え]、[住所2_控え]を再現。でも、そんなことをする位ならば・・・ Public Sub 住所不一致_Update()   Dim isNotAgree As Boolean      If Len(Me.郵便番号 & "") Then     isNotAgree = CBool(Me.住所1 <> ZipConv(Me.郵便番号, zcKen))     isNotAgree = isNotAgree + CBool(Me.住所2 <> ZipConv(Me.郵便番号, zcCty1) & ZipConv(Me.郵便番号, zcCty2))     Me.住所不一致 = isNotAgree   End If End Sub と、ZipConv()をもって比較すれば済む話。そういうことで、コメントアウトしている行は不要。つまり、[住所1_控え]、[住所2_控え]は不要。そういうことになるようです。 Option Compare Database Option Explicit Private Sub Form_Current()   'If Me.NewRecord Then   '  Me.住所1_控え = ""   '  Me.住所2_控え = ""   'Else   '  Me.住所1_控え = ZipConv(Me.郵便番号, zcKen)   '  Me.住所2_控え = ZipConv(Me.郵便番号, zcCty1) & ZipConv(Me.郵便番号, zcCty2)   'End If End Sub Private Sub 住所1_AfterUpdate()   住所不一致_Update End Sub Private Sub 住所2_AfterUpdate()   住所不一致_Update End Sub Private Sub 郵便番号_AfterUpdate()   Me.住所不一致 = False End Sub Public Sub 住所不一致_Update()   'Me.住所不一致 = CBool((Me.住所1 <> Me.住所1_控え) + (Me.住所2 <> Me.住所2_控え))      Dim isNotAgree As Boolean      If Len(Me.郵便番号 & "") Then     isNotAgree = CBool(Me.住所1 <> ZipConv(Me.郵便番号, zcKen))     isNotAgree = isNotAgree + CBool(Me.住所2 <> ZipConv(Me.郵便番号, zcCty1) & ZipConv(Me.郵便番号, zcCty2))     Me.住所不一致 = isNotAgree   End If End Sub さてさて、問題は、[住所1]と[住所2]とを変更すべき事態の発生頻度です。事実上はゼロではないでしょうか?いずれにしろ、私の当初アイデアには致命的な問題点があったので撤回します。

beezel1999
質問者

お礼

試したところ動きました。意図した処理も難なくできました。 本当にありがとうございます。 実際の処理説明を記載いただきました、回答3にベストアンサーを付けさせていただきます。

その他の回答 (3)

回答No.4

なお、テーブルに列[住所不一致]列がなくても、クエリにて回答3と同じ方法で不一致レコードは抜き出せます。それが、最適解かも知れませんね。

beezel1999
質問者

お礼

案、ありがとうございます。親身に考えてくださっているのが伝わり感動しています。 最適解のクエリにしても、コーディングにしても以下のサイトにあるような ZipConvをまず標準モジュールに設定することが前提ですね? APIの呼び出しに明るくないので、ACCESS2010-2013での動作確認からになってしまいますが 試してみます。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsZipConv.html

beezel1999
質問者

補足

試したところ動きました。意図した処理も難なくできました。 本当にありがとうございます。 実際の処理説明を記載いただきました、回答3にベストアンサーを付けさせていただきます。

回答No.2

× 3、入力用の非表示のテキストボックスにも住所を代入する。 〇 3、入力用の表示中のテキストボックスにも住所を代入する。

回答No.1

まず、アイデアの確認が必要です。 1、郵便番号を入力する。 2、非表示のテキストボックスに住所を代入する。 3、入力用の非表示のテキストボックスにも住所を代入する。 4、で、非表示と入力用との違いをチェックする。 5、ただし、住所1、住所2、住所3、ビル等とし変更は不要とする。 こういう風にするのか? >保存処理のボタンを押したタイミングで・・・ 非連結フォームの場合、保存処理のボタンは必要ないかと・・・。

関連するQ&A

  • 郵便番号と住所について。

    Access2000で住所録をつくっています。 郵便番号を入力して変換すると住所になる、というIMEの機能はわかったのですが、郵便番号と住所を別の欄につくったので、郵便番号を入力したら自動で住所欄に住所が入るようにしようと思い、郵政省のところから住所録(全国版)を持ってきました。 これを「住所録」というテーブルにしました。 フィールドとしては ・郵便番号 ・都道府県 ・市町村 ・町名 の4つです。 これを使い自動で入力を行うような状態にしたいのです。 郵便番号を入れると自動で入力されるようにする、というのはなんとかできそうなのですが、逆のパターンの場合にどうしたらいいか考えています。 (例えば同じ町名でも番地によって郵便番号が違うのはどうしたらいいか・・・など。) また、「北海道」と都道府県に入力したら市町村のところには北海道の市町村しか出ないようにするにはどうしたらよいでしょうか?(町名もおなじく。) やはり都道府県別にテーブルを作ったりする必要が出てきますか? よろしくお願いします。

  • Access2000で郵便番号と住所の連動がおかしい

    職場で顧客情報を管理するデータベースをAccess2000にて作成しています。利用しているパソコンのOSはWinXP ProSP2です。 詳細を実例で紹介するのは問題があるため、架空の状況で説明いたします。 お客様と、お客様のご友人とのデータを、同じテーブルで管理しているとします。このデータベースは長年運用しており、これまで問題なく使っていたと考えてください。 お客様のご住所を管理するために、「顧客〒」と「顧客住所」の二つのフィールドを用いており、両方に適切に入力支援を設定しています。「顧客〒」に郵便番号を入力すれば、「顧客住所」に住所が補完され、逆もまた同様、という状況です。 同じような設定を、ご友人の情報についても行い、それぞれ「友人〒」、「友人住所」とのフィールドで管理しているものとします。 さて、お客様のご友人が増えたことから、従来の「友人〒」「友人住所」のフィールドをそれぞれ「友人1〒」「友人1住所」と名称を変更し、新たに「友人2〒」「友人2住所」とのフィールドを新設しました。 どこか設定を誤ったのか、 ・「友人2〒」に郵便番号を入力すると、「友人1住所」に住所が補完される という現象が生じています。他方で、 ・「友人1〒」に郵便番号を入力すると、適切に「友人1住所」に住所が補完される のです。 テーブルの入力支援設定で連動させるべきフィールドを間違ったものと思い、確認してみたりですが、問題ありませんでした。念のため、入力支援の設定をやり直してみましたが、依然問題は解決しません。 確認すべきところを教えて頂ければ幸いです。

  • 住所から郵便番号を入力したい

    現在、顧客マスタがありますが郵便番号は入っていません。 これに簡単に郵便番号を加える方法はありますか。 #顧客IDはオートナンバーでこれは変更はしない方法希望。 #VBAは未経験。 #住所のフィールドはあります。

  • Access入力済の郵便番号から自動的に住所入力

    Access2013 テーブルのフィールドにすでに入力してある郵便番号から、都道府県と住所の2分割に自動的に入力する方法を教えて下さい。 住所入力支援ウイザードで、個々に郵便番号を打ち込み入力し、都道府県と住所を自動入力することはできたのですが。 宜しくお願いします。

  • エクセルで郵便番号→住所

    例えばA1に郵便番号を入力したら B1に住所が自動で入力される、 という方法は無いですか? 今年賀状を作っていて郵便番号をネットで検索してからそれをA1にコピーして B1には郵便番号を手で入力して変換して 住所を出しているので面倒です(≧×≦)

  • 住所入力の効率化

    明日の朝一番にソフト改善の打ち合せがあるので急いで教えて下さい。m(_ _)m 質問は、郵便番号と住所を入力する別々のフィールドがある入力画面で 郵便番号を入力すると住所のフィールドへ郵便番号辞書(IMEなど)から 住所を自動で入力する方法はありますか? Accessにはあった様に思うのですが・・・・同様のものです。 私はユーザー側なので具体的なコーディングなどは結構ですが 難易度が高いのであれば難易度も教えて下さい。 因みに、DBはOraclです。

  • エクセルで 住所→郵便番号

    宜しくお願い致します。 例えばA1に住所を入力したら B1に郵便番号が自動で入力される、 という方法は無いですか? 葬儀の記帳名簿に郵便番号を書く欄がなく、あとから困っています。

  • 郵便番号を入力→住所へ

    Excel97の使用を前提に質問させて頂きます。 新規作成でA列に郵便番号を入力すると、B列に自動的に住所が表示される 上記の事がしたく、過去の投稿を色々と読ませて頂きましたが、いまいち意味がよくわかりません。 過去に投稿している方で下記のような質問をしている方がいました。 ===ここから========================== 「EXCELの郵便番号変換ツール」のことは存じております。この機能を使うと、まとめて 入力してある場合には、一括変換できるのですが全く新規に、お客様の名簿を見ながら 入力するので、その都度、ウィザードを使って変換しながら進めるのは面倒ですし、 1件入力するごとに、正しい郵便番号と住所が表示されているかを確認したいのです。 1.郵便番号を入力 2.隣りのセルに住所が自動的に表示される 3.続きの住所を入力 のような使い方は、Excelで出来ますでしょうか? IMEで「人名地名辞書」を使うと、郵便番号を2度入力するようになって、誤りが発生 しやすい気がしてます。(1回目は、郵便番号の列用、2回目は住所列で変換用) できれば1回入力するだけで自動表示させたいのでもしそのような使い方をされて いる方がいらしたら教えてくださいませ。 回答→ IMEで「人名地名辞書」モードにして住所は郵便番号変換します。その際、郵便番号の セル(恐らく住所を入力するセルの左隣?)に以下の関数を仕込んでおいたら如何でしょう? =LEFT(ASC(PHONETIC(★)),8)   *★は住所のセル番号 ===ここまで================== Excelについては本当に初心者で関数の入力の仕方もわかりません。 こんな状態なのでもっと砕いて詳しく教えていただけないでしょうか? お手数と思いますが宜しくお願い致します。 使用PC Windows98 IBM Aptiva

  • 郵便番号更新による既存顧客住所の更新

    現在、Officeの郵便番号辞書を使用し、Accessで郵便番号7桁を入力し、住所を自動的に引っ張ってくる フォームを作成・使用しています。 ところが2年程、郵便番号辞書の更新を行っていなかった為、登録されている住所が古い状態です。 早速、最新の郵便番号辞書に更新しましたが、無論既存の顧客住所は古いままです。 既存住所を最新の状態にするには、再度登録画面で郵便番号を入力し直すしかないのでしょうか? 宜しくお願いします。

  • エクセルで郵便番号と住所の登録

    エクセルで住所録を作りたいのですが、 セルA1に100-0001(郵便番号) と入力すれば、 セルB1に住所が入力される方法を探しています。 IMEで郵便番号変換(?)すると、 郵便番号が消えてしまうのがちょっと面倒なのです。 ひとつフリーソフトで郵便番号を入力すれば自動的に 住所も入力されるというのを見つけましたが、 専用の画面で入力し、 エクセルにダウンロードするという仕組みです。 できればダイレクトにエクセル上で入力できるといいのですが・・。 このような方法で入力できる方法があれば教えてください。

専門家に質問してみよう