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");
<サンプル>
// アプリケーションデータソースとしてデータを渡します。 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">
<サンプル>
<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"/>>
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
【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>
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"/>