ページ・レベルの計算の挿入
PDFおよびPPTでサポートされるページレベルの計算についてさらに学習します。
「パブリッシャ」は、PDFおよびPPT出力のみについて次の項で説明するページレベルの計算をサポートしています:
ページ合計の表示
レポートに計算されたページ合計を表示できます。 ページは公開時まで作成されないため、合計関数は書式設定エンジンで実行する必要があります。
ノート:
ページ合計はPDF書式設定レイヤーで実行されます。 したがって、この機能は他の出力タイプでは使用できません: HTML, RTF, Excel. このページ合計関数は、ソースXML co6deにRAW数値がある場合にのみ機能します。 数値は事前に書式設定しないでください。
ページ合計フィールドがXML入力データに存在しないため、値を保持する変数を定義する必要があります。 変数を定義する場合は、その変数をページに対して合計されるXMLファイルのエレメントに関連付けます。 合計フィールドを定義した後は、それらのフィールドのデータに対して追加機能を実行することもできます。
ページ合計を保持する変数を宣言するには、合計する要素のプレースホルダーの直後に次の構文を挿入します:
<?add-page-total:TotalFieldName;'element'?>
where
TotalFieldNameは、(後で参照するために)合計に割り当てる名前です
'element'は、合計されるXML要素フィールドです。
この構文は、合計するフィールド数だけ追加できます。
次に、合計フィールドを表示する場合は、次の構文を入力します:
<?show-page-total:TotalFieldName;'Oracle-number-format' number-separators="{$_XDONFSEPARATORS}"?>
where
TotalFieldNameは、前述のページの合計フィールドに割り当てた名前です
Oracle-number-formatは、Oracle書式マスク(例: : 'C9G999D00'). Oracle書式マスクの記号のリストは、「Oracle抽象書式マスク」を参照してください。
number-separators="{$_XDONFSEPARATORS}"は、定義した書式マスクにグループ化セパレータおよび小数セパレータを適用するための必須属性です。
次の例では、テンプレートにページ合計フィールドを設定して、ページに表示されている貸方と借方の合計を表示し、2つのフィールドの純額を計算する方法を示します。
この例では、次のXMLコードを使用します:
<balance_sheet>
<transaction>
<debit>100</debit>
<credit>90</credit>
</transaction>
<transaction>
<debit>110</debit>
<credit>80</credit>
</transaction>
â¦
<\balance_sheet>
次の図は、値を保持するためにテンプレートに挿入する表を示しています:
次の表に、前の図に示した表を含むテンプレートで行われたフォーム・フィールド・エントリを示します:
デフォルト・テキスト・エントリ | フォーム・フィールドのヘルプ・テキスト入力 | 説明 |
---|---|---|
FE |
<?for-each:transaction?> |
このフィールドは、トランザクション・グループのオープン"for-each"ループを定義します。 |
100.00 |
<?debit?><?add-page-total:dt;'debit'?> |
このフィールドは、XMLファイルの借方要素のプレースホルダーです。 このフィールドをページごとに合計するために、ページ合計宣言構文が追加されます。 借方要素の合計を保持するように定義された変数はdtです。 |
90.00 |
<?credit?> <?add-page-total:ct;'credit'?> |
このフィールドは、XMLファイルのクレジット要素のプレースホルダーです。 このフィールドをページごとに合計するために、ページ合計宣言構文が追加されます。 クレジット要素の合計を保持するように定義された変数はctです。 |
正味 |
<add-page-total:net;'debit - credit'?> |
借方の値から貸方の値を減算して、ネット・ページ合計を作成します。 |
EFE |
<?end for-each?> |
for-eachループを閉じます。 |
"net"として定義された変数では、貸方要素と借方要素の値に対して計算を実行することに注意してください。
ページ合計フィールドを宣言したので、テンプレートにページ合計を表示するフィールドを挿入できます。 指定した名前(例: ctおよびdt)を使用して、計算された変数を参照します。 ページ合計を表示する構文は次のとおりです:
たとえば、借方ページの合計を表示するには、次のように入力します:
<?show-page-total:dt;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>
したがって、この例を完了するには、テンプレート・ページの下部またはフッターに次の項目を配置します:
ページ借方合計 : <?show-page-total:dt;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>
ページ貸方合計 : <?show-page-total:ct;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>
ページ合計残高 : <?show-page-total:net;'C9G990D00';'(C9G990D00)' number-separators="{$_XDONFSEPARATORS}"?>
このレポートの出力を次の図に示します:
繰越合計および繰越合計の挿入
多くのレポートでは、レポート出力全体でページ合計を保守し、各ページの先頭と末尾に表示する必要があります。 これらの合計は、「前進して前進」合計と呼ばれます。
ノート:
繰越フィールドと繰越フィールドの合計は、PDF書式設定レイヤーで実行されます。 したがって、この機能は、HTML、RTF、Excelなどの他の出力タイプでは使用できません。
次の図に、フォワード合計を含むレポートの例を示します:
最初のページの最後に、Amount要素のページ合計が「繰越」合計として表示されます。 2番目のページの上部では、この値は前のページの「繰越」合計として表示されます。 2番目のページの下部では、繰越値とそのページの合計が計算され、新しい「繰越」値として表示され、レポート全体で続行されます。
この機能は、「ページ合計の表示」機能の拡張です。 次の例では、公開済レポートの繰越合計と繰越合計を表示するために必要な構文と設定について説明します。
次のXMLコードがあるとします:
<?xml version="1.0" encoding="WINDOWS-1252"?>
<INVOICES>
<INVOICE>
<INVNUM>10001-1</INVNUM>
<INVDATE>1-Jan-2005</INVDATE>
<INVAMT>100</INVOICEAMT>
</INVOICE>
<INVOICE>
<INVNUM>10001-2</INVNUM>
<INVDATE>10-Jan-2005</INVDATE>
<INVAMT>200</INVOICEAMT>
</INVOICE>
<INVOICE>
<INVNUM>10001-1</INVNUM>
<INVDATE>11-Jan-2005</INVDATE>
<INVAMT>150</INVOICEAMT>
</INVOICE>
. . .
</INVOICES>
次の図に示すサンプル・テンプレートは、請求書表を作成し、ページ合計を保持するプレースホルダーを宣言します。
次の表に、上の図に示されているテンプレート内のフィールドを示します。
フィールド | フォーム・フィールドのヘルプ・テキスト入力 | 説明 |
---|---|---|
初期化PT |
|
ページ合計を保持するプレースホルダーとしてInvAmtを宣言します。 |
FE |
|
INVOICEグループを開始します。 |
10001-1 |
|
請求書番号タグのプレースホルダー。 |
2005年1月1日 |
|
請求書日付タグのプレースホルダー。 |
100.00 |
|
請求書金額タグのプレースホルダー。 |
InvAmt |
|
INVAMTページ合計オブジェクトをデータのINVAMT要素に割り当てます。 |
EFE |
|
INVOICEグループをクローズします。 |
終了PT |
|
「InvAmt」ページの合計を閉じます。 |
繰越合計を各ページの上部(最初のページを除く)に表示するには、次の構文を使用します:
<xdofo:inline-total
display-condition="exceptfirst"
name="InvAmt">
Brought Forward:
<xdofo:show-brought-forward
name="InvAmt"
format="99G999G999D00" number-separators="{$_XDONFSEPARATORS}"/>/>
</xdofo:inline-total>
次のリストでは、転送構文を構成する要素について説明します:
-
inline-total - この要素には、次の2つのプロパティがあります:
-
name-フィールドに対して宣言した変数の名前を指定します。
-
display-condition - 表示条件を設定します。 これは、次のいずれかの値をとるオプションのプロパティです:
-
first-内容は最初のページにのみ表示されます。
-
最終-内容は最後のページにのみ表示されます。
-
除く最初-コンテンツは、最初のページを除くすべてのページに表示されます。
-
以外-コンテンツは、最後のページ以外のすべてのページに表示されます。
-
everytime - (Default)コンテンツは各ページに表示されます。
この例では、display-conditionが"exceptfirst"に設定されており、値がゼロになる最初のページに値が表示されないようにしています。
-
-
-
進展:-この文字列はオプションで、レポートのフィールド名として表示されます。
-
show-brought-forward - ページの値を表示します。 次のプロパティがあります:
-
name-表示するフィールドの名前。 この場合は、InvAmtです。 このプロパティは必須です。
-
format-実行時に値に適用するOracle数値書式。 このプロパティはオプションですが、書式マスクを指定する場合は、Oracle書式マスクを使用する必要があります。 「Oracle抽象書式マスク」を参照してください。
-
number-separators="{$_XDONFSEPARATORS}" - この属性は、定義した書式マスクにグループ化セパレータと数値セパレータを適用するために必要です。
-
繰越合計を表示するテンプレートの上部に繰越オブジェクトを挿入します。 テンプレートの本文に配置した場合は、構文をフォーム・フィールドに挿入できます。
繰越合計をヘッダーに表示する場合は、ヘッダーまたはフッター・リージョンでMicrosoft Wordではフォーム・フィールドがサポートされていないため、完全なコード文字列をヘッダーに挿入する必要があります。 ただし、開始本文/終了本文構文を使用して、レポートの本文領域を定義することもできます。 「パブリッシャ」では、定義した本文領域を超えるコンテンツはヘッダー・コンテンツとして、次のコンテンツはフッターとして認識されます。 これにより、フォーム・フィールドを使用できます。 詳細は、「複数または複雑なヘッダーおよびフッターの作成」を参照してください。
合計を表示するテンプレートの下部に繰越オブジェクトを配置します。 この例の繰越オブジェクトは次のとおりです:
<xdofo:inline-total
display-condition="exceptlast"
name="InvAmt">
Carried Forward:
<xdofo:show-carry-forward
name="InvAmt"
format="99G999G999D00" number-separators="{$_XDONFSEPARATORS}"/>
</xdofo:inline-total>
転送オブジェクトと次の違いに注意してください:
-
display-conditionはexceptlastに設定されているため、繰越合計は最後のページ以外のすべてのページに表示されます。
-
表示文字列は「Carried Forward」です。
-
show-carry-forward要素は、繰越値を示すために使用されます。 これは、前述のように持ち運びされたものと同じプロパティを持ちます。
テンプレート内の1つの値に制限されるわけではありません。テンプレート内に複数の繰越/繰越しオブジェクトを作成し、データ内のさまざまな数値要素を指すことができます。
ノート:
前述の例に示すように、コマンド<?init-page-total:invAmnt?>
および<?end-page-total:InvAmt?>
を含めないでください。 表示条件ロジックの計算は、これらのコマンドによって正しく機能します。
累計の挿入
変数機能を使用して、現在までの合計を請求書リスト・レポートに追加できます。
詳細は、「変数の設定」を参照してください。 この例では、次のXML構造を想定しています:
<?xml version="1.0" encoding="WINDOWS-1252"?>
<INVOICES>
<INVOICE>
<INVNUM>10001-1</INVNUM>
<INVDATE>1-Jan-2005</INVDATE>
<INVAMT>100</INVOICEAMT>
</INVOICE>
<INVOICE>
<INVNUM>10001-2</INVNUM>
<INVDATE>10-Jan-2005</INVDATE>
<INVAMT>200</INVOICEAMT>
</INVOICE>
<INVOICE>
<INVNUM>10001-1</INVNUM>
<INVDATE>11-Jan-2005</INVDATE>
<INVAMT>150</INVOICEAMT>
</INVOICE>
</INVOICES>
このXMLコードを使用して、次の図に示すように、累計を含むレポートを作成できます。
「累計」フィールドを作成するには、合計を追跡する変数を定義し、0に初期化します。 次の図にテンプレートを示します。
次の表で、前の図に示したテンプレート内のフォーム・フィールドの値について説明します。
フォーム・フィールド | 構文 | 説明 |
---|---|---|
RtotalVar |
|
"RTotalVar"変数を宣言し、0に初期化します。 |
FE |
|
請求書グループを開始します。 |
10001-1 |
|
請求書番号タグ |
2005年1月1日 |
|
請求書日付タグ |
100.00 |
|
RTotalVarの値を現在の値に新規請求書金額を加えた値に設定します。 表示用のRTotalVar値を取得します。 |
EFE |
|
INVOICEグループを終了します。 |