SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(InputMan)

名前や郵便番号の入力値に応じて、ふりがなと住所を自動設定する.NETコンポーネント

InputMan for Windows Forms 5.0JのGcTextBox、GcIme、GcAddressコンポーネントを使った住所データ入力フォームの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

郵便番号-住所の連続変換処理の作成

 大量の住所データを処理するなら、コードから変換処理をした方が圧倒的に効率的だろうと思い、今度はコードからGcAddressコンポーネントを作成し、複数の郵便番号を一括して住所に変換し、リストボックスで表示する処理を作成してみました。

GetCustomerInfoFromZipNumberメソッドの実行

 ここでは、サブプロシージャ(独自のメソッド)「search」を作成し、郵便番号の連続変換を行うようにしています。メソッドの引数は1つで、郵便番号を文字列で指定します。

 郵便番号から住所を検索するには、GcAddressクラスのGetCustomerInfoFromZipNumberメソッドを使用します。第1引数に郵便番号を指定すると、検索結果を第2引数に指定した構造体「GcAddress.CustomerInfo」クラスのメンバに格納します。

 メソッドの実行に成功するとTrueを、失敗するとFalseを返してきます。

Visual Basic
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)
C#
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
Visual Basic
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)
C#
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桁を「-」(半角のハイフン)で区切り、空白が入らないように指定します。郵便番号に空白が入ると、正しい検索が行われませんので注意してください。

 なお、サンプルプログラムでは、動作確認のためにエラー用データも入れて検索を実行しています。

Visual Basic
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
C#
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コンポーネントであれば、標準コントロールも含めてふりがな入力機能を実現できるようになります。大幅に開発工数を削減することもできますので、利用しない手はないでしょう。

 

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(InputMan)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2662 2009/03/17 12:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング