Crystal Reports は、3 パスの処理を通じてレポートを生成します。パスは、データを読み込んで操作するたびに Cristal Reports が使用する処理です。Crystal Reports は、レポートの複雑さに応じて、データにパス 1、パス 2、またはパス 3 の処理を実行します。この機能により、複雑なレポートの作成と式の処理が可能になっています。
レポートをプレビューする場合、最初に評価される要素は、“定数式”です。定数式とは、レポート全体で定数値を持つ式です。どのレコードでも、定数式は変わりません。100*30 は定数式の例です。定数式は、出力生成処理の初めに評価され、二度評価されることはありません。この処理は、“BeforeReadingRecords”と呼ばれます。たとえば、定数式フィールド(100*30)を詳細セクションに配置した場合、表示されるどのレコードでも結果は 3000 になります。
“BeforeReadingRecords”処理が終わると、Crystal Reports はデータベース レコードの読み込みを開始します。レコードの読み込み処理の詳細は、次のとおりです。
プレパス 2 では、Crystal Reports は、上位/下位 N または階層グループ化に備えて、レポート内のグループを並べ替えます。この段階ではレコードは読み込まれません。その代わり、Crystal Reports はパス 1 のグループ インスタンスだけを参照し、適切な上位 N を決定したり、指定された階層グループ化設定に基づいてグループを並べ替えます。
Crystal Reports はパス 2 で、データを一覧してページを書式設定します。ページの書式設定は必要に応じて行われます。つまり、Crystal Reports では、ユーザーから要求されるか、パス 3 で総ページ数のカウントに必要になるまで、ページは書式設定されません。
ページの書式設定では、次の項目が処理されます。
小計または集計情報への参照を含む式です。“出力時”関数とも呼ばれます。この評価時期は、“WhilePrintingRecords”と呼ばれます。
積算合計や“出力時”関数を含むクロス集計、チャート、およびマップはパス 2 で生成されます。また、クロス集計に基づくチャートもパス 2 で生成されます。
注 レポートがグループ選択式を含む場合は、小計、総計、および集計の値が正しくならないことがあります。これは、パス 1 で総計と集計が計算された後に、パス 2 でグループ選択式がデータに再度フィルタを適用するためです。集計操作の代わりに積算合計を使用することにより、グループ選択式を含むレポートのデータを集計できます。
最後のパス 3 では、総ページ数が決定されます。この値は、総ページ数や "ページ数(N/M)などの特殊変数フィールドを使用するレポートに適用されます。