帳票クリエータ 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では画面右側に挿入候補一覧が表示され、入力をサポートします。
出力結果:
ファイル名で使用する
ファイル名でテンプレートを使用することによって、任意の日付形式にフォーマットされた日時をファイル名として出力できます。また、次回リビジョンアップで、シングルページ(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(プロパティ画面の『レコードセット』)でも設定できます。
出力時には、外部パラメータで抽出する分類を指定します。例えば、rdcコマンドで分類「3」を抽出して出力する場合は以下のようになります。
rdc.bat 果物.dcx -UD=分類:3
GUIで出力/プレビューを実行する場合は、外部パラメータ(プロパティ画面の『外部パラメータ』)に仮データを設定してください。なお、SQL文にテンプレートが使用されている設定ファイル(出力定義ファイル)をGUIで開くと、レコードセットの読み込みでエラーが発生しますが、外部パラメータを設定するとエラーは解消されます。
いかがでしたでしょうか?体験版が無料でダウンロードできますので、ぜひお試しください。