| Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース 1 (11.1.1) B61375-04 |
|
![]() 前 |
![]() 次 |
この項では、様々なレポート・カスタマイズの例を示します。ここでは次の例を取り上げます。
すべてのXMLカスタマイズには、次のタグ・ペアが必要です。
<report></report>
たとえば、最小限のXMLカスタマイズは次のとおりです。
<report name="emp" DTDVersion="9.0.2.0.0"> </report>
このXMLカスタマイズには何も含まれていないので、レポートに適用しても効果は一切ありません。必要なタグがあるので解析はできますが、単に必須タグの例として示しています。
<report>タグは、レポート・カスタマイズの開始、レポート・カスタマイズ名およびこのXMLカスタマイズで使用するデータ型ディクショナリ(DTD)ファイルのバージョンを示します。</report>タグは、レポート・カスタマイズの終了を示します。
reportタグのname属性には、任意の名前を指定できます。たとえば、XMLファイルでカスタマイズするレポートの名前でも、それ以外の名前でもかまいません。
この例では、<report>タグが最小限で使用されています。<report>タグにも多数の属性がありますが、そのほとんどは暗黙的に示されており、指定する必要はありません。<report>に唯一必要な属性は、DTDVersionです。
|
注意: XMLカスタマイズ・ファイルを適用して、既存のレポート・トリガーを変更するか新しいレポート・トリガーを作成するには、 たとえば、Before Reportトリガーを変更または作成するには、 <report DTDVersion="9.0.2.0.0" beforeReportTrigger="BeforeReport"> XMLカスタマイズ・ファイルを適用してレポート・トリガーを変更または作成するときにこの属性を指定しないと、XMLカスタマイズ・ファイルがレポートに適用されたときに、レポート・トリガーのPL/SQLコードがローカル(依存しない)ファンクションとして扱われます。 |
完全なレポート定義には、データ・モデルとレイアウトの両方が必要です。したがって、次のタグとその内容を定義する必要があります。
<data></data>
<layout></layout>
dataタグには、属性がありません。layoutタグには、panelPrintOrderとdirectionの2つの属性があり、その両方が必須です。これらの属性にデフォルト値(それぞれacrossDownとdefault)を使用する場合は、それらを指定する必要はありません。data要素とlayout要素の例は、次の各項で示します。
この項の例では、XMLを使用して、レポート・フィールドF_Mincurrent_pricePersymbolおよびF_Maxcurrent_pricePersymbolに使用されている塗りつぶしカラーと線カラーを変更しています。
<report name="anyName" DTDVersion="9.0.2.0.0">
<layout>
<section name="main">
<field name="F_Mincurrent_pricePersymbol"
source="Mincurrent_pricePersymbol"
lineColor="black"
fillColor="r100g50b50"/>
<field name="F_Maxcurrent_pricePersymbol"
source="Maxcurrent_pricePersymbol"
lineColor="black"
fillColor="r100g50b50"/>
</section>
</layout>
</report>
この例では、sectionタグとfieldタグのname属性が、このXMLファイルでカスタマイズされるレポートのメイン・セクションに含まれるフィールドの名前と一致していることが前提となっています。この前提を踏まえて、fieldタグのその他の属性は、レポートのメイン・セクション内にある同じ名前のフィールドのみに適用されます。
この項の例では、XMLを使用して、レポート・フィールドf_trade_dateに使用される書式マスクを変更しています。
<report name="anyName" DTDVersion="9.0.2.0.0">
<layout>
<section name="main">
<field name="f_trade_date"
source="trade_date"
formatMask="MM/DD/RR"/>
</section>
</layout>
</report>
fieldタグが独自の終了書式(/>)を使用していることに注意してください。fieldタグが追加の子タグを使用する場合は、fiieldタグを</field>で閉じます。
この項の例では、XMLを使用して、レポートのf_p_eおよびf_p_e1フィールドで10より大きな値をハイライトする書式例外を追加しています。
<report name="anyName" DTDVersion="9.0.2.0.0">
<layout>
<section name="main">
<field name="f_p_e" source="p_e">
<exception textColor="red">
<condition source="p_e" operator="gt" operand1="10"/>
</exception>
</field>
<field name="f_p_e1" source="p_e">
<exception textColor="blue">
<condition source="p_e" operator="gt" operand1="10"/>
</exception>
</field>
</section>
</layout>
</report>
この例では、operatorの値が、「より大きい」を示すgtに設定されています。operatorには、表22-1に示すものを指定できます。
表22-1 operator属性の値
| 値 | 使用方法 |
|---|---|
|
|
等しい |
|
|
より小さい |
|
|
以下 |
|
|
等しくない |
|
|
より大きい |
|
|
以上 |
|
|
範囲内 |
|
|
範囲外 |
|
|
類似 |
|
|
非類似 |
|
|
null |
|
|
非NULL |
前の例とは異なり、この例のfieldタグは、子タグを使用しているために、自己完結型の終了書式(/>)ではなく、</field>で閉じられていることにも注意してください。
この項の例では、XMLを使用してレポートにプログラム・ユニットを追加しています。このプログラム・ユニットによって、従業員の社会保障番号(:SSN)から従業員の詳細にアクセスするハイパーリンクが追加されます。
<report name="anyName" DTDVersion="9.0.2.0.0">
<layout>
<section name="header">
<field name="F_ssn1" source="ssn1">
<advancedLayout formatTrigger="F_ssn1FormatTrigger"/>
</field>
</section>
<section name="main">
<field name="F_ssn" source="ssn">
<advancedLayout formatTrigger="F_ssnFormatTrigger"/>
</field>
</section>
</layout>
<programUnits>
<function name="F_ssn1FormatTrigger">
<textSource>
<![CDATA[
function F_ssn1FormatTrigger return boolean is
begin
SRW.SET_HYPERLINK('#EMP_DETAILS_&<' || LTRIM(TO_CHAR(:SSN)) || '>');
return (TRUE);
end;
]]>
</textSource>
</function>
<function name="F_ssnFormatTrigger">
<textSource>
<![CDATA[
function F_ssnFormatTrigger return boolean is
begin
SRW.SET_LINKTAG('EMP_DETAILS_&<' || LTRIM(TO_CHAR(:SSN)) || '>');
return (TRUE);
end;
]]>
</textSource>
</function>
</programUnits>
</report>
CDATAタグは、PL/SQLをXMLと区別する目的で、PL/SQLの周辺で使用されています。XMLファイルにHTMLを埋め込むときも、同じタグ・シーケンスを使用します。この例では、advancedLayoutタグのformatTrigger属性の名前でファンクションが参照されています。
この項の例では、XMLを使用して、レポートに新しい問合せを追加するとともに、その問合せの結果を利用する新しいヘッダー・セクションを追加しています。
<report name="ref" DTDVersion="9.0.2.0.0">
<data>
<dataSource name="Q_summary">
<select>select portid ports, locname locations from portdesc</select>
</dataSource>
</data>
<layout>
<section name="header">
<tabular name="M_summary" template="BLAFbeige.tdf">
<labelAttribute font="Arial" fontSize="10"
fontStyle="bold" textColor="white"/>
<field name="F_ports" source="ports" label="Port IDs"
font="Arial" fontSize="10"/>
<field name="F_locations" source="locations" label="Port Names"
font="Arial" fontSize="10"/>
</tabular>
</section>
</layout>
</report>
この例のXMLは、データ・モデルと完全なレイアウトを備えているため、単独で実行できます。
列名が必ず一意となるように、SELECT文では別名を使用します。別名を使用しなかった場合は、レポート列のデフォルト名が使用されるため、予定外の名前になる可能性があります(たとえば、portidではなくportid1など)。fieldタグのsource属性を指定する場合は、ソース列(フィールド)の正しい名前を使用する必要があるので、この名前の指定は重要なポイントになります。
labelAttribute要素は、レイアウト内のフィールド・ラベルの書式を定義します。これはfieldタグの開始と終了タグの外側にあるため、表形式レイアウトのすべてのラベルに適用されます。この書式をいずれか1つのフィールドに関連付ける場合は、この要素を<field></field>タグ・ペアの内側に配置します。グローバルおよびローカルのlabelAttribute要素が両方とも(1つは<field></field>タグ・ペアの外側に、もう1つは内側に)存在する場合は、ローカルなラベル属性がグローバルな属性より優先されます。