| Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース2(11.1.2) B70751-01 |
|
![]() 前 |
![]() 次 |
作成したOracle Report XMLカスタマイズ・ファイルは、次の方法で使用できます。
CUSTOMIZEコマンドライン・キーワードまたはSRW.APPLY_DEFINITIONビルトイン・プロシージャを指定して、実行時にXMLレポート定義をRDFまたはその他のXMLファイルに適用します。詳細は、第21.4.1項「実行時のXMLレポート定義の適用」を参照してください。
|
注意: Oracle Reportsでは、REPファイルのXMLカスタマイズはサポートされません。 |
REPORT(またはMODULE)コマンドライン・キーワードを指定して、XMLレポート定義を単独で(他のレポートなしで)実行します。詳細は、第21.4.2項「XMLレポート定義の単独での実行」を参照してください。
CUSTOMIZEコマンドライン・キーワードを使用して、rwconverterによるバッチ変更を実行します。詳細は、第21.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
|
注意: この例では、CUSTOMIZEの値に、Windowsプラットフォームに格納されているファイルへのディレクトリ・パスが示されています。UNIXの場合は、そのプラットフォームの標準に従ってディレクトリ・パスを指定してください(つまり円記号(\)のかわりに通常のスラッシュを使用)。 |
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ビルトイン・プロシージャを使用します。この後の項では、これらのビルトイン・プロシージャの例を示します。
|
注意: SRW.APPLY_DEFINITIONおよびSRW.ADD_DEFINITIONビルトイン・プロシージャを含むSRWビルトイン・パッケージの説明、およびレポート・トリガーの詳細は、Oracle Reportsのオンライン・ヘルプを参照してください。 |
ファイル・システムに保存された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を一度実行するだけで、同じ変更を一度に多数のレポートに適用できます。
|
注意: rwconverter.batファイルでは、startキーワードを使用して、rwconverterプロセスが起動されます。startキーワードが指定されている場合、プロセスは非同期モードで起動されます。起動されたrwconverterでは、完了するまで処理が続行されます。大量のrdfのバッチ変換を使用する場合は、すべてのプロセスが同時に起動します。したがって、rwconverterをバッチ・モードで実行する場合は、rwconverter.batファイルを手動で変更してstartキーワードを削除することをお薦めします。 |
次の例では、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
|
注意: この例では、CUSTOMIZEの値に、Windowsプラットフォームに格納されているファイルへのディレクトリ・パスが示されています。UNIXの場合は、そのプラットフォームの標準に従ってディレクトリ・パスを指定してください(つまり円記号(\)のかわりに通常のスラッシュを使用)。 |