ActiveReports for .NET 18.0J
バーコード
ActiveReportsユーザーガイド > よくある質問 > 共通の項目(ページレポート/RDLレポート/セクションレポート) > バーコード

Code39バーコードのスタート/ストップキャラクタ("*")について

バーコード形式を Code39(Code39x)に設定した場合、スタート/ストップキャラクタである"*"は、バーコードに自動的に付加されて出力されます。そのため、データに"*"を含める必要はありません。

ただし、バーコードに付加される"*"は、バーコードのキャプション(※)には出力されません。
バーコードのキャプションに"*"を出力するには、TextBoxコントロールなどを別途配置し、そのコントロールに"*"を含めたテキストをセットしてください。

※ 以下のプロパティによって出力されるバーコードデータ文字列。
   セクションレポートの場合:CaptionPositionプロパティ
   ページレポート/RDLレポートの場合:CaptionLocationプロパティ

NW-7(CODABAR)バーコードのスタート/ストップキャラクタ、チェックディジットを設定する

Code39形式のバーコードのバーの太さを補正する

BarcodeコントロールのNWRatioプロパティの値を変更することにより、Code39形式のバーコードの細いバー(ナローバー)と太いバー(ワイドバー)の比率を調整することができます。NWRatioプロパティは、基本的には規定値のまま使用することを想定していますが、バーコードリーダー側の問題などで正確にバーコードを認識できないような場合に、本プロパティの値を使用してバーの太さを調整することが可能です。

例えば、細いバーと太いバーの間の比率を1:3とする場合、NWRatioプロパティの値は3となります。
NWRatioプロパティには、0または2~3までの値が設定可能です。
NWRatioプロパティの値は以下の方法で設定することが出来ます。

また、セクションレポートの場合は、コード上でNWRatioプロパティの値を変更することも可能です。

Visual Basic

Visual Basicコード
コードのコピー
' 細いバーと太いバーの間の比率を1:2.5に設定する
Me.Barcode1.NWRatio = 2.5
   

C#

C#コード
コードのコピー
// 細いバーと太いバーの間の比率を1:2.5に設定する
this.barcode1.NWRatio = 2.5;

Barcodeコントロールで、カスタマバーコード(郵便バーコード)を出力する

セクションレポートの場合は、BarcodeコントロールのStyleプロパティを、ページレポート/RDLレポートの場合は、BarcodeコントロールのSymbologyプロパティを、それぞれ"JapanesePostal"に設定した上で、以下の内容に従って使用してください。

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

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

セクションレポートの場合は、Textプロパティにセットするか、DataFieldプロパティを設定してデータソースにバインドさせてください。
ページレポート/RDLレポートの場合は、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コントロールでカスタマバーコードを正常に出力するには、データが上記の条件を満足するかどうかをチェックする必要があります。 たとえば以下のコードでは、変換したカスタマバーコード用キャラクタの正当性を正規表現を用いてチェックしています。

Visual Basic

Visual Basic コード
コードのコピー
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#

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を使用してカスタマバーコードを生成する方法は、レポート形式によって異なります。

セクションレポートの場合

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

Visual Basic コード
コードのコピー
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");
}
 

ページレポート/RDLレポートの場合

レポートでJPAddressのコンポーネントを使用するには、レポートにJPAddressのアセンブリ参照を追加する必要があります。詳細は「カスタムアセンブリの作成」を参照して下さい。

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

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

バーコードのキャプションを均等割付で出力する

Barcodeコントロールのキャプション(※)を均等割付の形で出力するような機能は、用意されておりません。

実現方法としては、均等割付の形で出力するように設定したTextBoxコントロールを使用する方法が考えられます。

Barcodeコントロールのキャプションを非表示(None)に設定し、Barcodeコントロールと同じ幅のTextBoxコントロールを、そのBarcodeコントロールの下に配置します。

文字列が均等割付で出力されるようにそのTextBoxコントロールのプロパティを設定し、バーコードデータと同じ値をTextBoxコントロールに設定してください。

※ 以下のプロパティによって出力されるバーコードデータ文字列。

 セクションレポートの場合:CaptionPositionプロパティ
 ページレポート/RDLレポートの場合  :CaptionLocationプロパティ

バーコードシンボルにセットしていないデータが含まれている

Barcodeコントロールにセットしたデータの末尾に、任意のデータが付加されてバーコードシンボルが生成される場合があります。これは、Barcodeコントロールが与えられたデータを元に自動的に計算したチェックディジット(チェックサム)が付加された状態でシンボルが生成されているためです。

チェックディジットの付加は、以下のプロパティで設定することが可能です。チェックディジットが不要である場合は、これらのプロパティをFalseに設定してください。(デフォルト設定はTrueです。)

セクションレポートの場合:CheckSumEnabledプロパティ

ページレポート/RDLレポートの場合:CheckSumプロパティ

なお、Barcodeコントロールが自動計算するチェックディジットは、キャプションには出力されません。

また、全てのバーコード形式について、チェックディジットの自動付加を制御できるわけではありません。上記のプロパティによる設定が有効なバーコード形式は、以下の通りです。

なお、CheckSumEnabled(CheckSum)プロパティを"True"に設定した時に自動的に付加されるチェックディジットは、キャプションには表示されません。

関連トピック