QR コード (QR Code)

Crystal Reports での QR コード生成

1. お使いのSAP Crystal Reportsソリューションのアーキテクチャ(32ビットまたは64ビット)を確認してください。
SAP Crystal Reports 2008 / 2011 / 2013 / 2016 は32ビットです。
SAP Crystal Reports 2020 / 2025 は64ビットです。

1.1 SAP Crystal Reportsソリューションが64ビットの場合は、以下に示すように64ビットファイルの cruflbcs_x64.dll を登録してください。
コマンドプロンプトを右クリックし、「管理者として実行」を選択して開きます。
qr code command prompt as administrator



64ビットのDLLを登録するには、次のコマンドを入力します。
cd "C:\Program Files\Common Files\Barcodesoft\FontUtil"
%systemroot%\System32\regsvr32.exe cruflbcs_x64.dll



1.2 SAP Crystal Reportsソリューションが32ビットの場合は、以下に示すように32ビットファイルの cruflbcs.dll を登録してください。
32ビットの cruflbcs.dll ファイルを登録するには、次のコマンドを入力します。
cd "C:\Program Files (x86)\Common Files\Barcodesoft\FontUtil"
regsvr32.exe cruflbcs.dll

register cruflbcs.dll commands for qr code



登録に成功すると、次のポップアップウィンドウが表示されます。
register cruflbcs.dll succeeded



2. Crystal Reportを開きます。「公式フィールド(Formula Fields)」を右クリックし、コンテキストメニューから「新規作成...(New...)」を選択します。名前ボックスに "qrcode1" と入力し、「エディターを使用(Use Editor)」をクリックします。

qrcode create formula in crystal reports

3. QRコードのエンコード処理後、短い文字列であっても、返されるコードワード(codewords)が予想以上に長くなることがあります。しかし、Crystal Reportsでは単一の公式フィールドに254文字までしか設定できません。そのため、BcsQRCodeフォントを適用する前に、QRコードのコードワードを複数のパーツに分割し、それらを1つの「テキストオブジェクト(Text Object)」内で結合する必要があります。必要な公式フィールドの数を確認するには、以下の関数を使用します:

BCSQRCodeFormulaNoForCR({Data.Code})

qrcode crystal reports UFL

4. 返されるコードワードが255文字を超える場合は、以下のように複数の公式フィールドを作成してください。その後、それらを順番に同じテキストオブジェクトにドラッグ&ドロップします。

qrcode create formula crystal reports

Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 1, 1, 0, 0)

Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 2, 1, 0, 0)

Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 3, 1, 0, 0)

公式フィールドの第1引数は、エンコードする文字列です。
公式フィールドの第2引数は、インデックスです。
公式フィールドの第3引数は、エラー訂正レベルです。値の範囲は1から4で、それぞれL07、M15、Q25、H30を表します。デフォルトの0に設定すると、エラー訂正レベルM15になります。

Girocode または欧州決済評議会(EPC)のQRコードユーザーの場合は、以下の数式を設定してください:

str = "BCD" & "&#0a;" & "001" & "&#0a;" & "1" & "&#0a;" & "SCT" & "&#0a;" & "BFSW3E33BER" & "&#0a;" & "Collection folder" & "&#0a;" & "DE33100206000001194701 " & "&#0a;" & "EUR123.45"
BCSQRCodeEncodeCR(str, 1, 1 )
BCSQRCodeEncodeCR(str, 2, 1)
BCSQRCodeEncodeCR(str, 3, 1)

各データセグメントの後に & "&#0a;" を追加してください。これはASCIIコードの0A(改行)として解析されます。

qrcode crystal reports UFL formula field

レポートに16進数のコードが表示されますが、心配しないでください。これは、QRコードのバーコードフォントがまだ適用されていないためです。

5. テキストオブジェクトを右クリックし、コンテキストメニューから「オブジェクトの書式設定(Format Object)」を選択します。次に、該当テキストオブジェクトのフォントとして "BcsQRcode" を選択します。

QRCode barcode font crystal reports

6. 「OK」ボタンをクリックします。レポート上にQRコードが表示されます。

QRCode barcode crystal reports

7. レポートでGS1 QRコードを使用したい場合は、BCSQRCodeEncodeCRGS1 数式を適用してください。

BCSQRCodeEncodeCRGS1(str, 1, 0);
BCSQRCodeEncodeCRGS1(str, 2, 0);
BCSQRCodeEncodeCRGS1(str, 3, 0);

第1引数は str です。cruflbcs.dll によってGS1 QRコードにエンコードされる前のデータは、次の形式に従う必要があります:(17)190508(90)50921。各アプリケーション識別子(AI)の前後に丸括弧を付けてください。必要に応じて、FNC1文字が自動的に追加されます。
第2引数は数式のインデックスです。
第3引数はエラー訂正レベルです。