Crystal ReportsでQRコードを生成する
Crystal ReportsでQRコードを生成するには?
Crystal ReportsでQRコードを生成するには、Barcodesoft UFLライブラリのBCSQRCodeEncodeCR関数を使用して新しい式フィールドを作成します。データベースフィールドを引数として渡し、その式フィールドをデザインキャンバスに配置して、フォントファミリーにBcsQRCodeを適用します。
-
ステップ 1: SAP Crystal Reportsのビット数を確認し、DLLを登録する
お使いのSAP Crystal Reportsのバージョンのビット数(32ビットまたは64ビット)を確認します。SAP Crystal Reports 2008から2016までは32ビット、SAP Crystal Reports 2020および2025は64ビットです。
64ビット版 Crystal Reports (2020 / 2025) の場合:
コマンドプロンプトを管理者として実行し、以下を実行します:
cd "C:\Program Files\Common Files\Barcodesoft\FontUtil"
%systemroot%\System32\regsvr32.exe cruflbcs_x64.dll
32ビット版 Crystal Reports (2008–2016) の場合:
コマンドプロンプトを管理者として実行し、以下を実行します:
cd "C:\Program Files (x86)\Common Files\Barcodesoft\FontUtil"
regsvr32.exe cruflbcs.dll
-
ステップ 2: Barcodesoft UFL関数を見つける
Crystal Reportsで、関数エクスプローラーの階層を以下のようにたどります:関数一覧 ⇒ 追加関数 ⇒ COM および .NET UFL (u212com.dll) ⇒ Visual Basic UFL。一覧から BCSQRCodeEncodeCR 関数をダブルクリックします。
-
ステップ 3: 新しい式フィールドを作成する
[式フィールド] を右クリックし、コンテキストメニューから [新規作成...] を選択します。新しいフィールドに 「BcsQRCode1」 という名前を付け、[エディタの使用] をクリックします。
QRコードのエンコード処理後、短い文字列であっても予想以上に多くのコードワードが含まれる場合があります。Crystal Reportsでは式フィールドが255文字に制限されているため、エンコードされたQRコードを分割し、フォントを適用する前にテキストオブジェクト内で結合する必要があります。必要な式フィールドの数を確認するには、次の関数を使用します:
BCSQRCodeFormulaNoForCR({Test.Data}) -
ステップ 4: 複数の式フィールドを作成する
BCSQRCodeFormulaNoForCR({Test.Data})の戻り値が1より大きい場合は、以下のように複数の式フィールドを作成します。作成後、それらを同じテキストオブジェクト内に順番に配置します。BCSQRCodeEncodeCR({Test.Data}, 1, 0)
BCSQRCodeEncodeCR({Test.Data}, 2, 0)
BCSQRCodeEncodeCR({Test.Data}, 3, 0)
パラメータ詳細: 第1パラメータはエンコードする文字列、第2パラメータは分割インデックス、第3パラメータは誤り訂正レベルです(1〜4はそれぞれL07、M15、Q25、H30を表します。自動選択されるデフォルトのM15誤り訂正を使用する場合は0に設定します)。
-
ステップ 5: レポートにテキストオブジェクトを挿入する
作成したすべての式フィールドを、このテキストオブジェクト内に順番にドラッグアンドドロップします。最初はレポートレイアウトに代替用の16進コードが表示されますが、バーコードフォントがまだ適用されていないためですので、心配する必要はありません。
-
ステップ 6: BcsQRCodeフォントを適用する
テキストオブジェクトを右クリックし、コンテキストメニューから [オブジェクトの書式設定] を選択します。[フォント] タブで、フォント名として 「BcsQRCode」 を選択します。
-
ステップ 7: QRコードの生成を確認する
[OK] ボタンをクリックします。代替文字が即座に変換され、レポートレイアウト上にスキャン可能なQRコードが正しく表示されます。
GS1準拠のQRコードを生成する方法
標準的なテキストエンコードではなく、GS1準拠のフォーマットが必要な場合は、専用の BCSQRCodeEncodeCRGS1 関数を使用し、複数の分割式にわたって記述します:
BCSQRCodeEncodeCRGS1(str, 1, 0);
BCSQRCodeEncodeCRGS1(str, 2, 0);
BCSQRCodeEncodeCRGS1(str, 3, 0);
GS1パラメータ仕様:
- 第1パラメータ (str): 生の入力データ文字列。各アプリケーション識別子(AI)の前後に、丸括弧を使用して要素を厳密にグループ化してください。例:
(17)190508(90)50921。ライブラリのバックグラウンドDLL処理により、必要なFNC1デリミタが自動的に挿入されます。 - 第2パラメータ: 対象となる式の連続したセグメントインデックス。
- 第3パラメータ: 希望する誤り訂正レベルの設定。