Barcodeコントロールで、カスタマバーコード(郵便バーコード)を出力する方法 【※サンプル有り】

文書番号 : 33913     文書種別 : 使用方法     登録日 : 2012/12/19     最終更新日 : 2013/04/04
文書を印刷する
対象製品
ActiveReports for .NET 7.0J
詳細
セクションレポートの場合は、BarcodeコントロールのStyleプロパティを、ページレポートの場合は、BarcodeコントロールのSymbologyプロパティを、それぞれ"JapanesePostal"に設定した上で、以下の内容にしたがって使用してください。


Barcodeコントロールにセットするカスタマバーコード用キャラクタについて

BarCodeコントロールを使用して、カスタマバーコード(郵便バーコード)を出力するには、郵便番号と住所表示番号から生成されたカスタマバーコード用キャラクタをセットする必要があります。

セクションレポートの場合は、Textプロパティにセットするか、DataFieldプロパティを設定してデータソースにバインドさせてください。
ページレポートの場合は、Valueプロパティにセットして下さい。

郵便番号と住所表示番号からカスタマバーコード用キャラクタの情報を抜き出す方法につきましては、日本郵政株式会社の下記ページの「6.バーコードに必要な文字情報の抜き出し法」をご参照ください。

[郵便番号制マニュアル]
http://www.post.japanpost.jp/zipcode/zipmanual/index.html

たとえば、以下のようなデータをBarcodeコントロールにセットします。

元となる住所データBarcodeコントロールにセットする値
〒981-3205
宮城県仙台市泉区紫山3-1-4 グレープビル2F
98132053-1-4-2
〒981-3205
宮城県仙台市泉区紫山3-1-4 グレープビルA棟101
98132053-1-4A101

スタート/ストップコード、空白のCC4、チェックデジットは、Barcodeコントロールによって自動的に付加されます。また、アルファベットを出力する場合、「"英数字制御コード"(CC1~CC3) + "数字"(0~9)」に変換する必要がありますが、この変換処理もBarcodeコントロールによって自動的に行われます。これらのコードを考慮する必要は特にありません。



Barcodeコントロールでカスタマバーコードを出力する際の注意事項

Barcodeコントロールをカスタマバーコードとして使用する場合、セットできるカスタマバーコード用キャラクタには、以下のような条件があります。
 (1)20文字以下
 (2)a~z、A~Z、0~9、-(半角ハイフン)のみ
上記の条件以外のデータをセットした場合、Barcodeコントロールが正常に出力されません。

Barcodeコントロールでカスタマバーコードを正常に出力するには、データが上記の条件を満足するかどうかをチェックする必要があります。
たとえば以下のコードでは、変換したカスタマバーコード用キャラクタの正当性を正規表現を用いてチェックしています。

◆サンプルコード(VB.NET)
Private Function chkBarCode(ByVal BarcodeChar As String) As Boolean
  Dim regex As New System.Text.RegularExpressions.Regex("[^a-zA-Z0-9-]")
  ' a~z、A~Z、~、-(半角ハイフン)以外の
  ' 不正な文字が含まれているかをチェックします。

  If (regex.IsMatch(BarcodeChar) = True) OrElse (BarcodeChar.Length > 20) Then
    ' 不正な文字が含まれているか、
    ' データが20文字を超える場合、
    ' Falseを返却します

    Return False
  Else
    ' 不正な文字が含まれておらず、
    ' データが20文字以内の場合、
    ' Trueを返却します

    Return True
  End If
End Function

◆サンプルコード(C#)
private bool chkBarCode(string BarcodeChar)
{
  System.Text.RegularExpressions.Regex regex =
    new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9-]");
  // a~z、A~Z、~、-(半角ハイフン)以外の
  // 不正な文字が含まれているかをチェックします。

  if ((regex.IsMatch(BarcodeChar) == true) || (BarcodeChar.Length > 20))
  {
    // 不正な文字が含まれているか、
    // データが20文字を超える場合、
    // Falseを返却します

    return false;
  }
  else
  {
    // 不正な文字が含まれておらず、
    // データが20文字以内の場合、
    // Trueを返却します

    return true;
  }
}


また、以下のような場合は、カスタマバーコードの一部が自動的に切り捨てられます。ご注意ください。
  1. 文字列中にアルファベットが含まれていた場合
    2キャラクタ分のデータ(制御コード+数字データ)が出力されますが、それによってはみ出してしまった分は、自動的に切り捨てられ、出力されません。
    (例)
     "ABCDEFGHIJKLMNOPQRST" の場合
     "(CC1)0(CC1)1(CC1)2(CC1)3(CC1)4(CC1)5(CC1)6(CC1)7(CC1)8(CC1)9"
     が出力される

  2. 20~21桁目がアルファベットになる場合
    最終桁は制御コードとなり、21桁目の数字データは自動的に切り捨てられ、出力されません。
    (例)
     "1234567890A1234567B" の場合
     "1234567890(CC1)01234567(CC1)"が出力される



JPAddressを使用してカスタマバーコードを出力する方法について

弊社製品の住所検索ライブラリである「JPAddress」を使用することにより、わずかなコーディングで住所情報からカスタマバーコードを生成することが可能です。JPAddressは自動的に、上記で紹介したような複雑な変換やチェックを行ってカスタマバーコード用キャラクタを生成します。



[JPAddress for .NET|日本仕様の住所検索ライブラリ]

JPAddressを使用してカスタマバーコードを生成する方法は、レポート形式によって異なります。
  1. セクションレポートの場合
  2. ページレポートの場合


セクションレポートの場合
セクションレポートの場合は、JPAddressのコンポーネントをレポートに配置し、GetPostalBarCodeValueメソッドを使用することで、カスタマバーコードを生成することができます。

◆サンプルコード(VB.NET)
Private Sub Detail1_Format(sender As System.Object, e As System.EventArgs) Handles Detail1.Format
  Barcode1.Text = GcJPAddress1.GetPostalBarCodeValue("宮城県仙台市泉区紫山3-1-4 グレープビル2F")
End Sub


◆サンプルコード(C#)
private void Detail_Format(object sender, EventArgs e)
{
  Barcode1.Text = gcJPAddress1.GetPostalBarCodeValue("宮城県仙台市泉区紫山3-1-4 グレープビル2F");
}



ページレポートの場合
ページレポートでJPAddressのコンポーネントを使用するには、レポートにJPAddressのアセンブリ参照を追加する必要があります。アセンブリ参照を追加する具体的な手順については、製品ヘルプの以下の内容をご参照ください。

PowerTools ActiveReports for .NET 7.0J
 - ActiveReportsユーザーガイド
  - 概念
   - ページレポートの概念
    - ページレポートでスクリプトの使用
     - カスタムアセンブリの作成

GrapeCity.Win.JPAddress.GcJPAddressクラスへの参照を追加し、BarcodeコントロールのValueプロパティに以下のような式を設定することで、カスタマバーコードを生成することができます。

=Code.gcJPAddress1.GetPostalBarCodeValue("宮城県仙台市泉区紫山3-1-4 グレープビル2F")


以下のリンクから、JPAddressを用いてカスタマバーコードを生成するサンプルプロジェクトをダウンロードすることができます。こちらもご参考ください。
※サンプルを実行するにはJPAddress for .NET 1.0J(1.0.2012.1121)が環境にインストールされている必要があります。

サンプルはこちらへ
関連情報
キーワード
HowTo バーコード