Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース 1 (11.1.1) B61375-04 |
|
![]() 前 |
![]() 次 |
作成したOracle Report XMLカスタマイズ・ファイルは、次の方法で使用できます。
CUSTOMIZE
コマンドライン・キーワードまたはSRW.APPLY_DEFINITION
ビルトイン・プロシージャを指定して、実行時にXMLレポート定義をRDFまたはその他のXMLファイルに適用します。詳細は、第22.4.1項「実行時のXMLレポート定義の適用」を参照してください。
注意: Oracle Reportsでは、REPファイルのXMLカスタマイズはサポートされません。 |
REPORT
(またはMODULE
)コマンドライン・キーワードを指定して、XMLレポート定義を単独で(他のレポートなしで)実行します。詳細は、第22.4.2項「XMLレポート定義の単独での実行」を参照してください。
CUSTOMIZE
コマンドライン・キーワードを使用して、rwconverter
によるバッチ変更を実行します。詳細は、第22.4.3項「バッチ変更の実行」を参照してください。
この後の項では、各ケースを詳しく説明するとともに、例を示します。
実行時にXMLレポート定義をRDFまたはその他のXMLファイルに適用するには、CUSTOMIZE
コマンドライン・キーワードまたはSRW.APPLY_DEFINITION
ビルトイン・プロシージャを使用します。CUSTOMIZE
は、rwclient
、rwrun
、rwbuilder
、rwconverter
およびURLレポート・リクエストとともに使用できます。
次に示すコマンドラインは、ジョブ・リクエストをOracle Reports Servicesに送信し、XMLレポート定義(emp.xml
)をRDFファイル(emp.rdf
)に適用します。この例では、CUSTOMIZE
キーワードがWindowsのディレクトリ・パスにあるファイルを参照しています。UNIXの場合は、UNIXの標準に従ってパスを指定してください(つまりmyreports/emp.xml
)。
rwclient REPORT=emp.rdf CUSTOMIZE=\myreports\emp.xml USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF SERVER=server_name
Reports Runtimeのコマンドであるrwrun
を使用する場合のコマンドラインは、次のとおりです。
rwrun USERID=username/password@my_db REPORT=emp.rdf CUSTOMIZE=\myreports\emp.xml DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF
実行時に複数のXMLレポート定義をレポートに適用するには、CUSTOMIZE
コマンドライン・キーワードにリストを指定します。次に示すコマンドラインにより、2つのXMLレポート定義のEMP0.XML
およびEMP1.XML
をRDFファイルのEMP.RDF
に適用するジョブ・リクエストをOracle Reports Servicesに送信します。
rwclient REPORT=emp.rdf CUSTOMIZE="(d:\corp\myreports\emp0.xml,d:\corp\myreports\emp1.xml)" USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF SERVER=server_name
注意: この例では、 |
Reports Runtimeを使用する場合のコマンドラインは、次のとおりです。
rwrun REPORT=emp.rdf CUSTOMIZE="(D:\CORP\MYREPOORTS\EMP0.XML,D:\CORP\MYREPORTS\EMP1.XML)" USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF
PL/SQLでRDFファイルにXMLレポート定義を適用するには、Before Parameter FormまたはAfter Parameter FormトリガーでSRW.APPLY_DEFINITION
およびSRW.ADD_DEFINITION
ビルトイン・プロシージャを使用します。この後の項では、これらのビルトイン・プロシージャの例を示します。
注意:
|
ファイル・システムに保存されたXMLをレポートに適用するには、レポートのBefore Parameter FormまたはAfter Parameter FormトリガーでSRW.APPLY_DEFINITION
ビルトイン・プロシージャを使用します。
Windowsの場合:
SRW.APPLY_DEFINITION ('%ORACLE_HOME%\TOOLS\DOC\US\RBBR\COND.XML');
UNIXの場合:
SRW.APPLY_DEFINITION ('$ORACLE_HOME/TOOLS/DOC/US/RBBR/COND.XML');
レポートの実行時に、トリガーが実行され、指定したXMLファイルがレポートに適用されます。
メモリー内にXMLレポート定義を作成するには、SRW.ADD_DEFINITION
を使用してドキュメント・バッファに定義を追加した後に、SRW.APPLY_DEFINITION
ビルトイン・プロシージャを使用してその定義を適用する必要があります。
次の例では、ユーザーが入力したパラメータ値に基づいてメモリー内にいくつかの定義を作成し、それらを適用する方法を示します。この例のPL/SQLは、videosales_custom.rdf
というレポートのAfter Parameter Formトリガーで使用されます。
videosales_custom.rdf
ファイルのAfter Parameter Formトリガーに入っているPL/SQLが実行する内容は、次のとおりです。
実行時にユーザーによって入力されたパラメータ値に基づいて、条件と合致したフィールドをハイライトします。
実行時にユーザーによって入力されたパラメータ値に基づいて、数値書式マスクを変更します。
次のヒントは、この例を参照する際に役立ちます。
SRW.APPLY_DEFINITION
ビルトイン・プロシージャを使用するたびに、ドキュメント・バッファがフラッシュされるので、そのたびにSRW.ADD_DEFINITION
を使用してXMLレポート定義を新規作成する必要があります。
パラメータhilite_profits
、hilite_costs
、hilite_sales
およびmoney_format
を使用して、XMLレポート定義に入れる内容を決定している点に注意してください。hilite_profits
、hilite_costs
およびhilite_sales
パラメータは、書式例外でも使用されており、これによってハイライトする値が決定します。
VARCHAR2列のサイズには上限があるため(4000バイト)、かなり大きなXMLレポート定義の場合は、複数の列にまたがって指定しなければならない場合もあります。その場合は、1つの大きな定義を作成して一度に適用するのではなく、メモリー内に定義をいくつか作成し、別々に適用する必要があります。
function AfterPForm return boolean is begin SRW.ADD_DEFINITION('<report name="vidsales_masks" author="Generated" DTDVersion="9.0.2.0.0">'); IF :MONEY_FORMAT='$NNNN.00' THEN SRW.ADD_DEFINITION('<layout>'); SRW.ADD_DEFINITION('<section name="main">'); SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_PROFITPerCITY" source="SumTOTAL_PROFITPerCITY" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_SALESPerCITY" source="SumTOTAL_SALESPerCITY" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_COSTPerCITY" source="SumTOTAL_COSTPerCITY" formatMask="LNNNNNNNNNNN0D00"/>'); SRW.ADD_DEFINITION('</section>'); SRW.ADD_DEFINITION('</layout>'); ELSIF :MONEY_FORMAT='$NNNN' THEN SRW.ADD_DEFINITION('<layout>'); SRW.ADD_DEFINITION('<section name="main">'); SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_PROFITPerCITY" source="SumTOTAL_PROFITPerCITY" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_SALESPerCITY" source="SumTOTAL_SALESPerCITY" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('<field name="F_SumTOTAL_COSTPerCITY" source="SumTOTAL_COSTPerCITY" formatMask="LNNNNNNNNNNN0"/>'); SRW.ADD_DEFINITION('</section>'); SRW.ADD_DEFINITION('</layout>'); END IF; SRW.ADD_DEFINITION('</report>'); SRW.APPLY_DEFINITION; SRW.ADD_DEFINITION('<report name="vidsales_hilite_costs" author="Generated" DTDVersion="9.0.2.0.0">'); IF :HILITE_COSTS <> 'None' THEN SRW.ADD_DEFINITION('<layout>'); SRW.ADD_DEFINITION('<section name="main">'); SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST">'); SRW.ADD_DEFINITION('<exception textColor="red">'); SRW.ADD_DEFINITION('<condition source="TOTAL_COST" operator="gt" operand1=":hilite_costs"/>'); SRW.ADD_DEFINITION('</exception>'); SRW.ADD_DEFINITION('</field>'); SRW.ADD_DEFINITION('</section>'); SRW.ADD_DEFINITION('</layout>'); END IF; SRW.ADD_DEFINITION('</report>'); SRW.APPLY_DEFINITION; SRW.ADD_DEFINITION('<report name="vidsales_hilite_sales" author="Generated" DTDVersion="9.0.2.0.0">'); IF :HILITE_SALES <> 'None' THEN SRW.ADD_DEFINITION('<layout>'); SRW.ADD_DEFINITION('<section name="main">'); SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES">'); SRW.ADD_DEFINITION('<exception textColor="red">'); SRW.ADD_DEFINITION('<condition source="TOTAL_SALES" operator="gt" operand1=":hilite_sales"/>'); SRW.ADD_DEFINITION('</exception>'); SRW.ADD_DEFINITION('</field>'); SRW.ADD_DEFINITION('</section>'); SRW.ADD_DEFINITION('</layout>'); END IF; SRW.ADD_DEFINITION('</report>'); SRW.APPLY_DEFINITION; SRW.ADD_DEFINITION('<report name="vidsales_hilite_profits" author="Generated" DTDVersion="9.0.2.0.0">'); IF :HILITE_PROFITS <> 'None' THEN SRW.ADD_DEFINITION('<layout>'); SRW.ADD_DEFINITION('<section name="main">'); SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT">'); SRW.ADD_DEFINITION('<exception textColor="red">'); SRW.ADD_DEFINITION('<condition source="TOTAL_PROFIT" operator="gt" operand1=":hilite_profits"/>'); SRW.ADD_DEFINITION('</exception>'); SRW.ADD_DEFINITION('</field>'); SRW.ADD_DEFINITION('</section>'); SRW.ADD_DEFINITION('</layout>'); END IF; SRW.ADD_DEFINITION('</report>'); SRW.APPLY_DEFINITION; return (TRUE); end;
XMLレポート定義を単独で実行するには、REPORT
(またはMODULE
)オプションにXMLファイルを指定してリクエストを送信します。次のコマンドラインにより、レポートのemp.xml
を単独で実行するジョブ・リクエストをOracle Reports Servicesに送信します。
rwclient USERID=username/password@my_db REPORT=c:\corp\myreports\emp.xml DESTYPE=file desname=emp.pdf DESFORMAT=pdf SERVER=server_name
Reports Runtimeのコマンドであるrwrun
を使用する場合のコマンドラインは、次のとおりです。
rwrun USERID=username/password@my_db
REPORT=c:\corp\myreports\emp.xml
DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF
この方法でXMLレポート定義を実行する場合は、必ずXMLファイルの拡張子を指定します。また、CUSTOMIZE
コマンドライン・キーワードを使用して、XMLカスタマイズ・ファイルをこのレポートに適用することもできます。
更新を必要とするレポートが大量にある場合は、rwconverter
でCUSTOMIZE
コマンドライン・キーワードを使用して、バッチの変更を実行できます。バッチ変更は、多数のレポートに同じ変更を繰り返し実行する必要がある場合に特に便利です(たとえば、フィールドの書式マスクの変更など)。Oracle Reports Builderでレポートを1つずつ開いて手動で変更するかわりに、rwconverter
を一度実行するだけで、同じ変更を一度に多数のレポートに適用できます。
注意:
|
次の例では、2つのXMLレポート定義のtranslate.xml
およびcustomize.xml
を3つのRDFファイルのinven1.rdf
、inven2.rdf
およびmanu.rdf
に適用し、変更後の定義を新しいファイルのinven1_new.rdf
、inven2_new.rdf
およびmanu_new.rdf
に保存します。
rwconverter username/password@my_db
STYPE=rdffile SOURCE="(inven1.rdf, inven2.rdf, manu.rdf)"
DTYPE=rdffile DEST="(inven1_new.rdf, inven2_new.rdf, manu_new.rdf)"
CUSTOMIZE="(d:\apps\trans\translate.xml,d:\apps\custom\customize.xml)"
BATCH=yes
注意: この例では、 |