郵便番号-住所の連続変換処理の作成
大量の住所データを処理するなら、コードから変換処理をした方が圧倒的に効率的だろうと思い、今度はコードからGcAddressコンポーネントを作成し、複数の郵便番号を一括して住所に変換し、リストボックスで表示する処理を作成してみました。
GetCustomerInfoFromZipNumberメソッドの実行
ここでは、サブプロシージャ(独自のメソッド)「search」を作成し、郵便番号の連続変換を行うようにしています。メソッドの引数は1つで、郵便番号を文字列で指定します。
郵便番号から住所を検索するには、GcAddressクラスのGetCustomerInfoFromZipNumberメソッドを使用します。第1引数に郵便番号を指定すると、検索結果を第2引数に指定した構造体「GcAddress.CustomerInfo」クラスのメンバに格納します。
メソッドの実行に成功するとTrueを、失敗するとFalseを返してきます。
Private Sub search(ByVal zipcode As String) Dim jusyo As GcAddress.CustomerInfo Dim result As Boolean Dim GcAddress2 As New GcAddress() Dim data As String = "" jusyo = New GcAddress.CustomerInfo() result = GcAddress2.GetCustomerInfoFromZipNumber(zipcode, jusyo)
private void search(String zipcode){ GcAddress.CustomerInfo jusyo; Boolean result; GcAddress gcAddress2 = new GcAddress(); String data = ""; jusyo = new GcAddress.CustomerInfo(); result = gcAddress2.GetCustomerInfoFromZipNumber(zipcode, ref jusyo);
取得した住所データを取り出す処理
住所が検索されると、CustomerInfoクラスのZipCodeフィールドには郵便番号が、Addressフィールド(構造体)には住所データが格納されます。
Address構造体では、以下のフィールドに別れてデータが格納されるので、これを取り出してリストボックスに組み込みます。
Prefecture | 都道府県名 |
City | 市 |
Town | 町 |
If result = False Then data = "住所がみつかりません: 〒" + zipcode Else data = "〒" & jusyo.ZipCode.Substring(0, 3) & "-" & _ jusyo.ZipCode.Substring(3) & " " & _ jusyo.Address.Prefecture & _ jusyo.Address.City & _ jusyo.Address.Town End If Me.ListBox1.Items.Add(data)
if(result == false){ data = "住所がみつかりません: 〒" + zipcode; }else{ data = "〒" + jusyo.ZipCode.Substring(0, 3) + "-" + jusyo.ZipCode.Substring(3) + " " + jusyo.Address.Prefecture + jusyo.Address.City + jusyo.Address.Town; } listBox1.Items.Add(data);
サブプロシージャ(メソッド)searchの実行
後は、ボタンのClickイベントハンドラでサブプロシージャ(メソッド)searchを実行します。このとき、郵便番号は「xxx-xxxx」と前3桁と後4桁を「-」(半角のハイフン)で区切り、空白が入らないように指定します。郵便番号に空白が入ると、正しい検索が行われませんので注意してください。
なお、サンプルプログラムでは、動作確認のためにエラー用データも入れて検索を実行しています。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click '郵便番号に空白を入れないこと Call search("000-0000") 'エラー用データ Call search("617-0814") Call search("245-0001") Call search("173-0004") Call search("657-0053") Call search("540-0036") Call search("812-0068") Call search("722-0221") End Sub
private void button1_Click(object sender, EventArgs e) { //郵便番号に空白を入れないこと search("000-0000"); //エラー用データ search("617-0814"); search("245-0001"); search("173-0004"); search("657-0053"); search("540-0036"); search("812-0068"); search("722-0221"); }
まとめ
ふりがなと住所の自動入力機能は、業務用アプリケーションに組み込むととてもユーザーフレンドリーな操作性を提供しますので、ぜひ取り入れたい機能ですが、自作するとなるとかなり大変です。
GcAddressコンポーネントであれば、住所データベースもセットで簡単に使えます。また、GcImeコンポーネントであれば、標準コントロールも含めてふりがな入力機能を実現できるようになります。大幅に開発工数を削減することもできますので、利用しない手はないでしょう。