biz-StreamマニュアルPDF出力ガイド第4章 文字修飾動的変更機能編4.3 データソース

4.3 データソース

データソース

biz-Streamでは、テーブル、フレームの繰り返し行の中のタグの内容値は、name属性の値が "NAME" であるタグの内容値を "VALUE" に変更するのにデータソースのレコードとして キー-値ペアの組の複数レコードを biz-Streamに与えることより、各レコードに対応する行内の対応するタグの値を変更できます。

これと同様に繰り返し行の中のタグのname属性の値が"NAME"であるタグの属性 "ATTR"の値に変更する場合、name属性の値と変更したい属性名を "::"で区切って連結したものをキーとする複数レコードからなるデータソースを biz-Streamに与えることにより、各レコードに対応する行内の対応するタグの文字色や背景色などの属性の値を実行時に変更できます。指定可能な属性、その値、不正な指定の場合の動作は上記setValues()の場合と同様です。



アプリケーションデータソース

アプリケーションデータソースではHashtableType tableに

table.put("NAME::FontColor","0,0,255");
と登録し、複数のHashtableTypeを包含した RecordTypeをsetDataSource()でbiz-Streamに与えます。
<サンプル>
//  アプリケーションデータソースとしてデータを渡します。
RecordType records = new RecordType();
HashtableType values;

//1件目 values = new HashtableType();
values.put("INVOICE NO",new StringType("AA0001"));
values.put("MODEL",new StringType("MODEL01"));
values.put("SEIHAN NO",new StringType("1000"));
//INVOICE NO の文字色を R=200,G=100,B=50 に
values.put("INVOICE NO::FontColor",new StringType("200,100,50"));
records.add(values);

//2件目 values = new HashtableType();
values.put("INVOICE NO",new StringType("BB0001"));
values.put("MODEL",new StringType("MODEL02"));
values.put("SEIHAN NO",new StringType("1010"));
//INVOICE NO の文字色を blue に
values.put("INVOICE NO::FontColor",new StringType("blue"));
records.add(values);
....
xml.setDataSource("application-data-resource",records);


CSVデータソース / xmlデータソース

CSVデータソースおよびxmlデータソースでは<bs:data-type>のcolumn-name 属性の値がキーとなります。
<bs:data-type column-name="NAME::FontColor" column-no="1" type="char">
とし、該当するCSVファイルではフィールド(上記例では1カラム目)の値を属性に、xmlファイルでは項目の値を設定する値とすることにより繰り返し行内のタグの属性が変更できます。
<サンプル>
<bs:data-type column-name="INVOICE NO" column-no="1" type="char"/>
<bs:data-type column-name="MODEL" column-no="2" type="char"/>
<bs:data-type column-name="SEIHAN NO" column-no="3" type="char"/>
<bs:data-type column-name="MODEL::FontColor" column-no="4" type="char"/>>
【CSVファイルの内容】
INVOICE NO,MODEL,SEIHAN NO,MODEL::FontColor
AA0001,MODEL01,1000,"200,100,50"
BB0001,MODEL02,1010,blue
CC0001,MODEL03,1020,yellow
BB0002,MODEL04,1030,blue
BB0003,MODEL11,1040,"50,200,100"
AA0002,MODEL31,1300,red
上記例では、CSVファイルの2カラム目がname属性の値が"MODEL"であるタグの値を与え、4カラム目が同タグのFontColor属性の値を与えます。PDF では "MODEL02"はblueの文字色で、"MODEL03"はyellow の文字色で描画されます。
【xmlファイルの内容】
<data><INVOICE NO>AA0001</INVOICE NO><MODEL>MODEL01</MODEL><SEIHAN NO>1000</SEIHAN NO> 
<MODEL::FontColor>200,100,50</MODEL::FontColor></data>
<data><INVOICE NO>BB0001</INVOICE NO><MODEL>MODEL02</MODEL><SEIHAN NO>1010</SEIHAN NO>
<MODEL::FontColor>blue</MODEL::FontColor></data>
<data><INVOICE NO>CC0001</INVOICE NO><MODEL>MODEL03</MODEL><SEIHAN NO>1020</SEIHAN NO>
<MODEL::FontColor>yellow</MODEL::FontColor></data>
<data><INVOICE NO>BB0002</INVOICE NO><MODEL>MODEL04</MODEL><SEIHAN NO>1030</SEIHAN NO>
<MODEL::FontColor>blue</MODEL::FontColor></data>
<data><INVOICE NO>BB0003</INVOICE NO><MODEL>MODEL11</MODEL><SEIHAN NO>1040</SEIHAN NO>
<MODEL::FontColor>50,200,100</MODEL::FontColor></data>
<data><INVOICE NO>AA0002</INVOICE NO><MODEL>MODEL31</MODEL><SEIHAN NO>1300</SEIHAN NO>
<MODEL::FontColor>red</MODEL::FontColor></data>
上記例では、xmlファイルの<MODEL>の値に<MODEL::FontColor>の文字色を適用します。 PDF では "MODEL02"はblueの文字色で、"MODEL03"はyellow の文字色で描画されます。


RDBデータソース

RDBデータソースではSQLステートメントにおける列名がキーとなります。SQLステートメントにて列名として " "(半角スペース) や ":"(半角コロン) は使えないため <bs:data-type>タグのlayout-name 属性(V4.3.5より追加)でSQLステートメントでの列名とレイアウトXMLでの名前を関連づけます。<bs:data-type>タグではcolumn-name 属性がデータソース側の名前(RDBデータソースではSQLステートメントの列名)を表し、layout-name 属性がレイアウトXML側の名前を表して両者を関連付け、データソース側でレイアウトXMLでの定義と同一の名前を持つ必要がなくなります。

テーブル test2が以下の列

INVOICE_NO, MODEL,SEIHAN_NO,SEIHAN_NO_COLOR

を持ち、以下のデータが格納されているものとします。
INVOICE_NO MODE SEIHAN_NO SEIHAN_NO_COLOR
AA0001 MODEL01 1000 200,100,50
BB0001 MODEL02 1010 blue
CC0001 MODEL03 1020 yellow
BB0002 MODEL04 1030 blue
BB0003 MODEL11 1040 50,200,100
AA0002 MODEL31 1300 red
<サンプル>
<bs:query-statement master-reference="csv-resource">
select INVOICE_NO, MODEL, SEIHAN_NO, SEIHAN_NO_COLOR from test2
</bs:query-statement>
<bs:data-type column-name="INVOICE_NO"
layout-name="INVOICE NO" column-no="1" type="char"/>
<bs:data-type column-name="MODEL"
layout-name="MODEL" column-no="2" type="char"/>
<bs:data-type column-name="SEIHAN_NO"
layout-name="SEIHAN NO" column-no="3" type="char"/>
<bs:data-type column-name="SEIHAN_NO_COLOR"
layout-name="SEIHAN NO::FontColor"
column-no="4" type="char"/>
SQLステートメントの列名 "SEIHAN_NO" がレイアウトXMLでの名前 "SEIHAN NO" に関連付けられ、name属性の値が "SEIHAN NO "であるタグの値となります。SQLステートメントの列名 "SEIHAN_NO_COLOR" がレイアウトXMLでの名前"SEIHAN NO::FontColor" に関連付けられ、同タグのFontColor属性の値となります。上記データを使えばPDF では "1010" はblueの文字色で、"1020"はyellow の文字色で描画されます。