ActiveReports for .NET 18.0J
改ページによるイベント発生順の変化
ActiveReportsユーザーガイド > 概念 > セクションレポートの概念 > イベント > 改ページによるイベント発生順の変化

セクションのイベント発生順は、セクションのプロパティ設定によって大きく変化します。なかでもNewPageKeepTogetherGroupKeepTogetherNewColumnプロパティなど、改ページ処理に関連するものは非常に大きな影響を与えます。このトピックでは、改ページ処理によるイベント発生順の変化を解説します。

レポートの構成

観測に用いたレポートは以下の3つです。

レポート実行結果

それぞれのレポートを実行し、セクションイベントの発生順を観測すると、以下のような結果となります。

レポート1 レポート2 レポート3 レポート4
1 ReportStart ReportStart ReportStart ReportStart
2 PageStart PageStart PageStart PageStart
3 GroupHeader1_Format GroupHeader1_Format GroupHeader1_Format GroupHeader1_Format
4 GroupHeader1_BeforePrint GroupHeader1_BeforePrint GroupHeader1_BeforePrint GroupHeader1_BeforePrint
5 GroupHeader1_AfterPrint GroupHeader1_AfterPrint GroupHeader1_AfterPrint GroupHeader1_AfterPrint
6 Detail_Format:1 Detail_Format:1 Detail_Format:1 Detail_Format:1
7 Detail_BeforePrint:1 Detail_BeforePrint:1 Detail_BeforePrint:1 Detail_BeforePrint:1
8 Detail_AfterPrint:1 Detail_AfterPrint:1 Detail_AfterPrint:1 Detail_AfterPrint:1
9 Detail_Format:2 Detail_Format:2 Detail_Format:2 Detail_Format:2
10 Detail_BeforePrint:2 Detail_BeforePrint:2 Detail_BeforePrint:2 Detail_BeforePrint:2
11 Detail_AfterPrint:2 Detail_AfterPrint:2 Detail_AfterPrint:2 Detail_AfterPrint:2
12 Detail_Format:3 Detail_Format:3 Detail_Format:3 Detail_Format:3
13 Detail_BeforePrint:3 Detail_BeforePrint:3 Detail_BeforePrint:3 Detail_BeforePrint:3
14 Detail_AfterPrint:3 Detail_AfterPrint:3 Detail_AfterPrint:3 Detail_AfterPrint:3
15 GroupFooter1_Format GroupFooter1_Format GroupFooter1_Format GroupFooter1_Format
16 GroupFooter1_BeforePrint GroupFooter1_BeforePrint GroupFooter1_BeforePrint GroupFooter1_BeforePrint
17 GroupFooter1_AfterPrint GroupFooter1_AfterPrint GroupFooter1_AfterPrint GroupFooter1_AfterPrint
18 GroupHeader1_Format GroupHeader1_Format PageEnd GroupHeader1_Format
19 GroupHeader1_BeforePrint PageEnd PageStart Detail_Format:4
20 GroupHeader1_AfterPrint PageStart GroupHeader1_Format PageEnd
21 Detail_Format:4 Detail_Format:4 GroupHeader1_BeforePrint PageStart
22 PageEnd GroupHeader1_BeforePrint GroupHeader1_AfterPrint Detail_Format:5
23 PageStart GroupHeader1_AfterPrint Detail_Format:4 GroupHeader1_BeforePrint
24 Detail_Format:5 Detail_BeforePrint:4 Detail_BeforePrint:4 GroupHeader1_AfterPrint
25 Detail_BeforePrint:4 Detail_AfterPrint:4 Detail_AfterPrint:4 Detail_BeforePrint:4
26 Detail_AfterPrint:4 Detail_Format:5 Detail_Format:5 Detail_AfterPrint:4
27 Detail_BeforePrint:5 Detail_BeforePrint:5 Detail_BeforePrint:5 Detail_BeforePrint:5
28 Detail_AfterPrint:5 Detail_AfterPrint:5 Detail_AfterPrint:5 Detail_AfterPrint:5
29 Detail_Format:6 Detail_Format:6 Detail_Format:6 Detail_Format:6
30 Detail_BeforePrint:6 Detail_BeforePrint:6 Detail_BeforePrint:6 Detail_BeforePrint:6
31 Detail_AfterPrint:6 Detail_AfterPrint:6 Detail_AfterPrint:6 Detail_AfterPrint:6
32 GroupFooter1_Format GroupFooter1_Format GroupFooter1_Format GroupFooter1_Format
33 GroupFooter1_BeforePrint GroupFooter1_BeforePrint GroupFooter1_BeforePrint GroupFooter1_BeforePrint
34 GroupFooter1_AfterPrint GroupFooter1_AfterPrint GroupFooter1_AfterPrint GroupFooter1_AfterPrint
35 PageEnd PageEnd PageEnd PageEnd
36 ReportEnd ReportEnd PageStart ReportEnd
37 PageEnd
38 ReportEnd

考察

  1. レポート1では、一見すると出力される順番どおりに、各セクションのFormatBeforePrintAfterPrintイベントがひとまとまりできれいに発生しているように見えます。しかしながら、4レコード目の詳細セクションは2ページ目に出力されていますが、(21)Detail_Formatは、1ページ目の処理中に発生していることがわかります。これは「集計コントロールによるイベント発生順の変化」の考察2において解説されているとおり、ActiveReportsでは一般的な動作です。
  2. レポート2、レポート3、レポート4は、いずれも出力結果は全く同じですが、改ページされる要因となっているセクションのプロパティが異なるため、イベントの発生順序が異なっていることがわかります。
  3. レポート2では、(18)GroupHeader1_Formatイベントの発生後に、1ページ目の処理が終了しています。これは、GroupHeader1のNewPageプロパティが「Before」に設定され、GroupHeader1の出力前に改ページされたためです。
  4. レポート3では、(17)GroupFooter1_AfterPrintイベントの発生後に、1ページ目の処理が終了しています。これは、GroupFooter1のNewPageプロパティが「After」に設定され、GroupFooter1の出力後に改ページされたためです。同様に、(34)GroupFooter1_AfterPrintイベント後にも改ページが発生しているように見受けられますが、この時点では、レポートが処理するデータはもう存在しないため、実際には改ページされることはありません。
  5. レポート4では、GroupHeader1のGroupKeepTogetherプロパティが「True」に指定されているため、グループヘッダ、詳細、グループフッタの各セクションは、可能な限り同一ページに出力されます。このため、2番目のグループは2ページ目に出力されますが、(18)GroupHeader1_Formatイベント、(19)Detail_Formatイベントが、1ページ目の処理中に発生していることがわかります。このとき、レポートは、2番目のグループヘッダまでは1ページ目に出力可能と判断しましたが、これに続く詳細セクションが1ページ目に収まりきらないため、このグループ全体が2ページ目に移動されました。