ActiveReportsを使用した帳票アプリケーションを作成する際の手順は、大きく分けてレポートの「デザイン」と「出力」の2つです。
レポートの「デザイン」は、ActiveReportsのデザイナを使用します。ActiveReports for .NET 16.0Jでは、3種類のデザイナを提供します。従来から提供している、データ(レコード)の数だけセクションと呼ばれる領域を繰り返し表示することで1つのページが構築される「セクションレポート」、ページ単位でレポートをデザインする「ページレポート」に加えて、9.0Jからはページレポートを拡張し、複数データソースをサポートする「RDLレポート」が追加されました(セクションレポート、ページレポート、RDLレポートそれぞれの特長については、「レポートの種類」を参照してください)。セクションレポート、ページレポート、RDLレポートはお互いを補完する関係にあり、帳票様式に合わせてデザイン方式を使い分け、帳票作成をより効率よく行うことができます。なお、1つのアプリケーション(プロジェクト)内で3種類のレポートを混在して使用することができます。
このデザインした内容をもとに、ActiveReportsはレポートの生成処理を実行し、その結果を「出力」します。
レポートの「出力」には、レポートのプレビュー(画面への出力)、印刷(プリンタへの出力)、保存(ファイルやストリームへの出力)の3つがあります。
以下の図は、ActiveReportsが上記の手順を実現する際に使用するコンポーネントの相関図です。ページレポート/RDLレポート用のエンジンとセクションレポート用のエンジンは完全に独立しています。その一方で、レポート設計用のデザイナと表示用のビューワ、各種形式に変換するためのエクスポートフィルタといった周辺コンポーネントは共通のものを使用しています。また、ページレポート/RDLレポート専用のエクスポートも用意されています。
ActiveReportsは、Windowsアプリケーション、WPFアプリケーション、およびWebアプリケーションの形式で帳票アプリケーションを作成できます。すべてのアプリケーションで上記で示した2つの手順(デザインと出力)が必要である点は同じです。しかし、Windows/WPFアプリケーションとWebアプリケーションでは、「出力」が実行される環境(場所)が異なる点に注意が必要です。
Windows/WPFアプリケーションの場合は、そのアプリケーションを実行している環境、つまり、各クライアント上で「出力」が実行されます。当然ながら、印刷もクライアントに接続しているプリンタに対して行われます。
Webアプリケーションの場合は、クライアントのリクエストにより、サーバー上で「出力」が実行されます。そして、その結果をクライアントのブラウザが受け取っているにすぎません。このため、クライアント側で印刷を行うには、クライアント側で何らかの作業(ユーザーがブラウザの印刷ボタンを押すなどの人為的な作業、もしくは、クライアント上で動くプログラムによって印刷するなどの作業)が必要です。これらの作業は、サーバー上で実行された結果をどのような形式でクライアントに配信するかによって、次のように異なります。
HTML形式の場合、ブラウザの印刷機能を利用することになります。また、PDF形式の場合、クライアントのブラウザがヘルパーアプリケーションとしてAdobe Readerを起動した後で、その印刷機能を利用することになります。これらの場合、サーバー側から印刷を制御することはできないため、ユーザーによる操作で印刷を行う以外に方法はありません。
ここまでで、クライアント側の受け取る形式によって制御できる内容に違いがあることを説明しました。以下は、ActiveReportsで提供している帳票の配信方法について紹介します。
Professionalのみに付属しているWebViewerコントロールを使用すれば、コードをほとんど記述することなく簡単に帳票の生成から配信ができ、さらに、Webアプリケーションとしてのページ遷移が可能です。出力形式として4種類がサポートされています。
この他にも、Professionalでは、ユーザーからのHTTP要求(特定のHTTP URLやURL拡張子)に対して自動的に処理を行い出力結果を返すHTTPハンドラという機能があります。
Standardでは、帳票の生成から配信までをすべてコードで記述する必要があります。エクスポート機能を使用し、HTML、PDF、Excelなどの形式でファイルを生成した後で、それらをResponseメソッドを使用してクライアントに配信します。