果樹配送伝票印刷ソフト「ももっちい」のカスタマバーコード対応をしました。
カスタマバーコードとは?
カスタマバーコードを記載することで、郵便物を1000通以上送る場合には、料金を3%割り引きにしてもらえるます。
詳しい内容については、郵便局のサイトで確認ができます。
※郵便局のホームページ参照
カスタマバーコードの仕組
郵便番号と住所の中に含まれている数字と、英字で作成されています。
『〒405-0075 山梨県笛吹市一宮町橋立1-2-30 アパートF789』のカスタマバーコードは…
↓
『40500751-2-30F789』と変換される
ActiveReportsのデザイン
- Barcodeコントロールを設置
- プロパティの【style】を『JapanesePostal』に設定する
- プロパティの【Text】にカスタマバーコード用キャラクタ(住所変換後の値)を設定する
住所のカスタマバーコード変換プログラム
正規表現を使って、英字、数字、ハイフン以外を削除しています。
コードを使用する場合は、検証をお忘れ無く。
''正規表現使用のため
Imports System.Text.RegularExpressions
''カスタマバーコード
Public Function str_CreateCustomerBarCode(strZip As String, ByVal strAddress As String) As String
Dim strRetZip As String
Dim strRetAddress As String
Dim strRetBarcode As String
'郵便番号にハイフンがあったら除外します------------------------------------
strZip = StrConv(strZip, vbNarrow)
strRetZip = Replace(strZip, "-", "", , , vbTextCompare)
'住所の全角文字を半角に変換します------------------------------------------
strAddress = StrConv(strAddress, vbNarrow)
''正規表現でa~z、A~Z、~、-(半角ハイフン)以外を削除
Dim reg As New Regex("[^a-zA-Z0-9-]") ''a~z、A~Z、~、-(半角ハイフン)
strRetAddress = reg.Replace(strAddress, "")
'変換された郵便番号と住所を結合して返します
strRetBarcode = strRetZip & strRetAddress
''カスタマバーコードチェック
If b_chkBarCode(strRetBarcode) Then
str_CreateCustomerBarCode = strRetBarcode
Else
''20文字を超えてる場合は、20文字でカットする
str_CreateCustomerBarCode = strRetBarcode.Substring(20)
End If
End Function
Public Function b_chkBarCode(ByVal BarcodeChar As String) As Boolean
Dim regex As New 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

