帳票クリエータ Ver.4 for Java のテキスト置換機能

こんにちは、開発担当の Masa です。

前回に引き続き、シーオーリポーツ 帳票クリエータ Ver.4 for Javaの新機能をご紹介します。
今回は、『テキスト置換機能』です。

帳票クリエータ Ver.4 for Javaでは、フィールドやファイル名などにテンプレート文字列(「$テンプレートの種類{パラメータ}」の予め指定された形式の文字列)を設定して、出力時に実際の値に置換することができるようになりました。
テンプレート文字列は通常のテキストや他のテンプレート文字列と組み合わせて使用できるため、多様な表現を可能にします。

フィールドで使用する

フィールドでテンプレートを使用することによって、任意の日付形式にフォーマットされた日時や、レコードセットの列の値を加工した結果を出力できます。他にもページ番号など、多くのテンプレート文字列を使うことができます。

以下にレコードセットの列の値を加工する例をあげます。このようなデータがあったとします。

単身 2人 3人 4人 2人幼 3人幼 4人幼
55 75 100 125 75 87.5 112.5
40 55 75 95 55 65 85
25 30 40 50 30 35 45

異なる列の値を改行コードで連結して出力する場合、「$R」テンプレート文字列を使用するだけで可能です。改行を挿入し、「【 】」で後半の列の値を装飾しています。

<DetailItem>
    <Field valueAs="DATA" valueType="TEMPLATE" index="0">$R{'単身'}</Field>
        <Field valueAs="DATA" valueType="TEMPLATE" index="1">$R{'2人'}
【$R{'2人幼'}】</Field>
        <Field valueAs="DATA" valueType="TEMPLATE" index="2">$R{'3人'}
【$R{'3人幼'}】</Field>
        <Field valueAs="DATA" valueType="TEMPLATE" index="3">$R{'4人'}
【$R{'4人幼'}】</Field>
</DetailItem>

値の解釈方法として「TEMPLATE」を指定し、値に「$R{'列名'}改行【$R{'列名'}】」を指定します。
もちろん、GUI(プロパティ画面の『フィールド』)でも設定できます。GUIでは画面右側に挿入候補一覧が表示され、入力をサポートします。

Rテンプレート

Rテンプレート

出力結果:

Rテンプレート出力

Rテンプレート出力

ファイル名で使用する

ファイル名でテンプレートを使用することによって、任意の日付形式にフォーマットされた日時をファイル名として出力できます。また、次回リビジョンアップで、シングルページ(1ページ1ファイル)出力時の連番の形式をカスタマイズすることが可能になります。

以下にファイル名で日時を使用する例をあげます。

出力日時をフォーマットする場合、「$DATE」テンプレートを使用するだけで可能です。ここでは「居住水準$DATE{yyyy年MM月dd日hh時mm分ss秒}」と入力します。

<FileOutJob jobName="RSI_1" fileName="居住水準$DATE{yyyy年MM月dd日hh時mm分ss秒}">
    <Document type="BINARY" />
</FileOutJob>

もちろん、GUI(プロパティ画面の『出力設定』)でも設定できます。

ファイル名でテンプレートを使用

ファイル名でテンプレートを使用

出力ファイルの名前(例)は「居住水準2020年11月30日08時10分35秒.rsi」となります。

SQL文で使用する

DBレコードセットのSQL文でテンプレートを使用することによって、出力時に外部から渡される値をSQL文で使用することができます。帳票で使用するデータの抽出条件を出力時に指定するといった、SQL文の動的生成が簡単に行えます。

以下にデータの抽出条件に外部から渡された値を使用する例をあげます。このようなデータがあったとします。

分類 品目 数量 価額 価格
1 みかん 596114 135092 227
1 いよかん 45656 8377 183
2 ふじ 296713 85130 287
3 幸水 48035 16684 347
3 新高 11900 2827 238

外部から渡された値を使用する場合、「$U」テンプレートを使用するだけで可能です。外部から渡した「分類」に一致するデータを抽出しています。

<RecordSet name="レコードセット1" type="DB" virtualStartIndex="10000">
    <Property name="driver" value="org.postgresql.Driver" />
    ... (省略) ...
    <Source valueAs="DATA" valueType="TEMPLATE" value="select * from 果物 where 分類 = $U{分類}" />
</RecordSet>

値の解釈方法として「TEMPLATE」を指定し、値に「select * from 果物 where 分類 = $U{分類}」を指定します。
もちろん、GUI(プロパティ画面の『レコードセット』)でも設定できます。

SQL文でテンプレートを使用

SQL文でテンプレートを使用

出力時には、外部パラメータで抽出する分類を指定します。例えば、rdcコマンドで分類「3」を抽出して出力する場合は以下のようになります。

rdc.bat 果物.dcx -UD=分類:3

GUIで出力/プレビューを実行する場合は、外部パラメータ(プロパティ画面の『外部パラメータ』)に仮データを設定してください。なお、SQL文にテンプレートが使用されている設定ファイル(出力定義ファイル)をGUIで開くと、レコードセットの読み込みでエラーが発生しますが、外部パラメータを設定するとエラーは解消されます。

実行時パラメータ

実行時パラメータ

いかがでしたでしょうか?体験版が無料でダウンロードできますので、ぜひお試しください。