ActiveReports for .NET 18.0J
データの流れ
ActiveReportsユーザーガイド > 概念 > セクションレポートの概念 > データ連結 > データの流れ

レポートはデータ(レコード)があってはじめて作成できるものです。レポートの生成とは、1件1件レコードを読み込み、次にその中のデータをセクション上にあるレポートコントロールに渡し、最後にそのセクションをメモリ上にある仮想ページ(Pageオブジェクト)に出力するという処理の繰り返しです。すべてのレコードの読み込みが完了すると、レポートの生成が終了します。

ここでの説明は、リレーショナルデータベースおよびADO.NETを用いたデータ接続について基本的な知識があることを前提としています。

バウンドレポート

以下の図は、ActiveReportsの一般的な手法であるバウンドレポートにおけるデータの流れを示します。

ActiveReportsでは、データクラス内のデータがTextBoxなどのレポートコントロールに直接渡されるのではなく、Fieldオブジェクトを経由して行われます。以下に、図中の丸囲みの数字のタイミングでどのような処理が行われているのかを解説します。

  1. 各種データソースからデータを取得します。ActiveReportsには6種類のデータソースクラスが用意されています。これらは、レポートのDataSourceアイコンをクリックしてGUI操作で簡単に使用することができます(コード上で記述することもできます)。また、.NET標準のデータクラスをレポートのデータソースに利用することも可能です。つまり、帳票以外のシステムで、DataSetやDataViewを作成済みの場合、これらを再利用することができます。
  2. ActiveReportsの DataSourceプロパティに1で作成したデータクラスをセットします。DataSourceプロパティには、さまざまなデータクラスを設定することができます。DataSourceアイコンを使用しGUI操作で作成したデータソースの場合、明示的にDataSourceプロパティにデータクラスをセットする必要はありません。ActiveReportsのデザイナが自動的にセットします。
  3. レポートを実行(Runメソッド)すると、データソース(DataTable)のカラム数分のFieldオブジェクトが、レポートのFieldsプロパティに自動的に追加されます。このように、データソースと連結されたFieldオブジェクトのことをバウンドフィールドといいます。
    注意: XMLDataSource使用時は、Fieldを使用せずにXMLの各ノードを巡回することによってデータを取得します。このため、他のデータソースと異なり、Fieldオブジェクトは自動生成されません。プログラム内でFieldオブジェクトを参照する場合は、この点に注意してください。
  4. ActiveReportsは、バウンドフィールドへデータを供給するために、FetchDataイベント(新しいレコードを処理するたびに発生します)を実行します。TextBoxなどのレポートコントロールへは、FechDataイベントが発生するたびにバウンドフィールドを経由してデータが渡されます。

アンバウンドレポート

ActiveReportsには、上述のバウンドレポート以外にアンバウンドレポートと呼ばれる手法が存在します。アンバウンドレポートとは、データクラスを使用しない(DataSourceプロパティが空の)レポートのことです。アンバウンドレポートのFieldsプロパティは初期状態では空になっています。プログラマは必要な分だけアンバウンドフィールドを作成し、それを介してレポートコントロールにデータを供給します。アンバウンドレポートにはレコードセットがないため、レコードポインタ(現在何件目のデータを処理しているのかという情報)の管理や、EOFの判定はFetchDataイベントの中でプログラマが行います。

アンバウンドレポートの作成方法については、「アンバウンドデータサンプル」、および「アンバウンドレポートでのグループ化」を参照してください。