果樹配送伝票印刷ソフト「ももっちい」のカスタマバーコード対応をしました。
カスタマバーコードとは?
カスタマバーコードを記載することで、郵便物を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