上記のように、レポートレンダリングのすべてのバンド(PageHeaderBand1,PageFooterBand1,OverlayBand1,ReportTitleBand1,ReportSummaryBand1以外)は、DataBand1に依存しています。これらの関係をより詳細に検討し、簡単な例から始めます。データバンドはテンプレートページに配置されます。
データソースのレコード数は5件なので、データバンドは5回印刷されることになります。
ほとんどすべてのバンドは、2つのカテゴリに分けることができます。ヘッダーとフッターに分けられ、それぞれのヘッダーは同じタイプのフッターに対応します。
注: ヘッダーとフッターが同数の場合、各ヘッダーはそれぞれのフッターに対応します。「ヘッダーとフッター」の対応は、ページの上から下へではなく、データバンドから考える。例えば、データバンドが1つ、ヘッダーが2つ、フッターが2つある場合を考えます。
|
ページ上のバンドの上から下への並び順。
順
|
バンド名
|
1
|
HeaderBand3
|
2
|
HeaderBand2
|
3
|
DataBand2
|
4
|
FooterBand3
|
5
|
FooterBand2
|
この場合、 HeaderBand3はFooterBand2 に対応し、HeaderBand2は FooterBand3 に対応します。つまり、データバンドの最初のヘッダーは、最初のデータバンドのフッターに対応します。以下は、レンダリングしたレポートの例です。
特定の種類のヘッダーとフッターの数が異なることはよくあることです。たとえば、上の例を変更して、HeaderBand2とDataBand2の間にHeaderBand4を追加すると、HeaderBand4はFooterBand3( 黄色)、HeaderBand2-FooterBand2(ターコイズ)に対応し、バンドHeaderBand3(青)にはフッターがないことになります。
注: ヘッダー・フッターはデータバンドの前後に1回だけ出力され、その数は何ら影響を受けません。ヘッダーとフッターはグループごとに表示され、各グループのヘッダーは厳密にグループのフッターに対応します。グループのヘッダーとフッターの数が異なる複雑なレポートでは、ヘッダーとフッターの関係に誤りが生じる可能性があります。そのため、レポートテンプレートでは、グループのバンド、ヘッダー、フッターの数を同じにすることをお勧めします。
|
下の例では、データのヘッダーとフッターの数を等しくしてみましょう。
この場合、HeaderBand4は FooterBand3(黄色)、HeaderBand2-FooterBand4(青緑色)、HeaderBand3(青色) -FooterBand2(高さゼロ)に対応します。同時に、FooterBand4はレンダリングレポートに印刷(表示)されません。
そのため、レポートにはヘッダーとフッターが同量存在し、それらの対応を容易に判断することができます。同時に、特定のバンドをオフにする(表示しない)ことも可能です。上記の例はすべて、ヘッダーバンドと フッターバンドについて検討したものです。グループヘッダーバンド、グループフッターバンド カラムヘッダーバンド、カラムフッターバンドも同じ原理です。
以下は、レポート内にいくつかのデータバンドがある場合の例です。
これらのバンドは互いに関連性がない。したがって、順次処理されます。まず、DataBand1(カテゴリリスト)が処理され、次に -DataBand2(製品リスト)が処理されます。
次に、ヘッダーバンドをレポートテンプレートに追加します。ヘッダーバンドは、それが配置されている上のデータバンドを参照します。HeaderBand1が DataBand1(カテゴリのリスト)に対応するためには、このデータバンドの上に配置する必要があります。
HeaderBand2がDataBand2(商品リスト)と関連するためには、このDataBandの真上に配置する必要があります。
そして、レポートの最初のページは次のようになります。
ここで、フッターと複数のデータバンドの関係について考えてみましょう。前述したように、レポートテンプレートのフッターは、このデータバンドの直下にのみ配置されたものを指します。同時に、フッターバンドはヘッダーバンドを閉じるものであります。例えば、カテゴリ数で合計を表示したいとします。この場合、FooterBand1は、カテゴリのリストを含むデータバンドの下に、製品のリストを含むHeaderBand2の上に配置する必要があります。
レポートページは次のように表示されます。
商品一覧のあるデータバンドで合計を表示するには、DataBand2 の下に FooterBand2を配置する必要があります。この例では、Sum 関数を使用してすべての製品の合計金額を計算してみましょう。その結果は、レポートの各ページに表示されます。(全ページ印刷プロパティをtrueに設定します)以下は、フッターをデータバンドと商品リストで構成したページテンプレートです。
そして、レポートの最初のページは次のように表示されます。
注: 上記の例では 、HeaderBand2の下に FooterBand1が配置されていますが、これは全く正しくありません。
この場合、FooterBand1とHeaderBand2は、どのデータバンドも参照しません。レポートをレンダリングする場合、まずすべてのデータバンドが定義されます。次に、各データバンドについて、このバンドに関連するヘッダーが定義されます。ヘッダーはすべて、フッターバンドまたは別のデータバンドの上に配置されます。次に、このデータバンドに関連するフッターが定義されます。これらは、次のヘッダーまたは別のデータバンドの下に配置されるフッターです。したがって、レンダリングされたレポートのDataBand1にはフッターがなく、DataBand2にはヘッダーがなく、HeaderBand2とFooterBand1はどのデータバンドにも属さないため表示されません。
|
グループヘッダーバンド、グループフッターバンド、カラムヘッダーバンド、カラムフッターバンドにも同じ対応原理が適用されます。
ヘッダーは関連するデータバンドの上に、フッターは下に配置されます。ヘッダーとフッターは、特定のデータバンドを参照する必要があるため、それ自体を印刷することはできません。
特にグループを使ったレポートでは、ヘッダーとフッターの数を常に確認してください。時には、特定のバンド(ヘッダーまたはフッター)を追加してその数を均等にし、線を明確にトレースする方が簡単です。-レンダリングレポートでバンドを隠したい場合は、レポートテンプレートでバンドの高さをゼロに設定します。
|