ColdFusion MX 7を使用すると、より詳細なレポートを表示するためのサブレポートを使用できます。サブレポートは、簡単に言うと、別のレポートに埋め込まれるかネストされたレポートです。この記事では、以後、サブレポートを含むレポートをメインレポートと呼ぶことにします。通常、サブレポートとメインレポートは内容的に関連しています。
ColdFusionでのレポート作成に関するこの記事では、サブレポートをメインレポートにリンクする2つのテクニックについて説明します。中でも、ColdFusion Report Builderを使用したサブレポートのリンクに重点を置いて説明します。
この記事では、サブレポートをメインレポートにリンクするために使用する、レポートとパラメータのバインド方法を含むいくつかの重要な概念を取り上げます。サブレポートのリンク方法については、次の2つのテクニックを説明します。
Javaアプレットによるレポートアプリケーションのサポートという困難な課題に取り組み、それを大変な思いで成し遂げた経験を持つ私は、ColdFusionが提供するレポート作成の新たな枠組みによって開発がシンプルで容易になったことのありがたさを実感しています。皆さんも、この記事をお読みになれば、ColdFusion MX 7のColdFusionレポート機能によってもたらされるパワーと迅速な開発のすばらしさをご理解いただけるでしょう。
メモ:ColdFusion MX 7を既にインストール済みの場合は、ColdFusion 7.0.1アップデータをインストールしてください。また、ColdFusionに付属するColdFusionサンプルアプリケーションもインストールしてください。サンプルアプリケーションをまだインストールしていない場合は、ColdFusionインストーラを再度実行し、インストール手順の中で「サンプルアプリケーション」を選択してください。
ColdFusionの基礎知識およびレポート作成の経験などのスキルがあることが推奨されます。ただし、この記事では、それらのスキルを前提とせずに、サンプルサブレポートを使用して手順を追って説明していきます。ColdFusionでのレポート作成が初めての場合は、Collin Tobin氏とDean Harmon氏による「ColdFusion MX 7を利用したレポート作成」をお読みください。
多くの企業に共通する業務の1つにレポートの作成があります。以前より、Crystal Reports、Actuate、Microsoft Accessなど、この種のソリューションを提供するソフトウェアパッケージは数多く存在しています。Webアプリケーションでのレポート作成は、時とともに、より現実的で効率的になってきました。以前は、ColdFusionでは、cfreportタグを使用したWebレポート機能を提供していました。しかし、ColdFusion MX 7では、新しいColdFusion Report Builderを使用してオンラインレポートを作成できるようになりました。
ColdFusion Report Builderツールは、レポート開発用にColdFusionサーバに統合された、ColdFusion MX 7に付属する独立したソフトウェアプログラムです。ColdFusion Report Builderを使用してレポートを作成すると、CFRという拡張子を持つ独自フォーマットの別のファイルが作成されます。そのファイル名の参照には、cfreportタグのtemplate属性を使用します。ColdFusionでは以前からcfreportタグが提供されていましたが、ColdFusion MX 7ではその機能がさらに強化されました。レポートのプレビュー用に、ColdFusionサーバーのWebルートを指すようにReport Builderを設定することができます。FlashPaper、PDF、またはExcelスプレッドシートのレポートを簡単に設定できます。
通常、ColdFusion Report Builderは、ColdFusionページに埋め込まれたレポートを設計するために使用されます。ColdFusion Report Builderのインタフェイスは、Macromedia Flash Professional 8のインタフェイスに似ています。ColdFusion Report Builderツールには、ラベルやフィールドコンポーネントなどのさまざまなコンポーネントが用意されており、それぞれが独自のプロパティセットを持っています。プロパティインスペクタでレポートの特定のコンポーネントまたは要素をハイライトすると、そのプロパティを変更することができます。このチュートリアルでは、サブレポートコンポーネントを使用して、メインレポートと既存のサブレポート、およびメインレポートと新しいサブレポートをリンクします。
図1. Subreportコンポーネントが選択されたReport Builderのツールボックス
メインレポートにサブレポートを埋め込むには、このSubreportコンポーネントを使用します。次のセクションでは、サブレポートパラメータを使用してサブレポートをメインレポートにバインドする方法について説明します。
一般に、メインレポートのクエリーから、パラメータとして値をサブレポートに渡すことにより、サブレポートをメインレポートにリンクできます。この値によって、サブレポートクエリーのデータがフィルタされます。サブレポートコンポーネントのSubreport Parametersプロパティを通じてレポートをリンクできます。このプロパティは、サブレポートプロパティのDataカテゴリで検索してください(図2を参照)。
図2.Subreport Parametersプロパティ
このプロパティは、サブレポートの入力パラメータに対応しています。このプロパティの名前は、サブレポートの入力パラメータの名前に一致していなければなりません。Subreport Parametersパラメータは、通常はメインレポートのクエリーのフィールドにマップされる式です(図3を参照)。このプロパティを表示するには、図2の右下隅にある省略記号(...)をクリックします。
図3.Subreport Parametersの式
既存のレポートを、別のレポート内部のサブレポートとしてネストできます。これを行うには、このチュートリアルに含まれるDepartment-EmployeesとCompany-Departmentsという名前のサンプルレポートを使用します。この演習では、Department-Employeesレポートはサブレポートです。
このチュートリアルでは、ColdFusion MX 7とともにサンプルアプリケーションをインストールしているものとします。cfdocexamplesデータベースを指定するcfdocexamplesデータソースを使用します。ColdFusionサンプルアプリケーションをインストールしていない場合は、ColdFusionインストーラをもう一度実行し、サンプルアプリケーションをインストールするオプションを選択してください。
サンプルアプリケーションをインストールしたら、次の手順に従って2つの既存のレポートをリンクします。
query.Dept_IDを選択し、「次へ」をクリックします。この時点で、レポートは図4のようになります。
図4.既存のレポートから作成されたサブレポート
レポートを保存し、F12キーを押してプレビューするか、レポートをブラウズします。例えばColdFusionのデフォルトのインストールでは、http://localhost:8500/subreports_example/ Company-Departments_v1.cfrとなります。
メモ:F12キーを押してもレポートのプレビューが表示されない場合は、編集/環境設定を選択します。「Preference Groups」から「サーバー接続」を選択し、ColdFusionサーバを正しく指定するように、「Server Information」の設定を変更します。
既存のサブレポートにリンクするのではなく、サブレポートを簡単に作成することもできます。このセクションでは、次の手順に従って新しいサブレポートを作成し、リンクします。
RDS用にColdFusionサーバを選択します。
メモ:RDSサーバを設定していない場合は、ここで設定する必要があります。設定するには、『ColdFusion LiveDocs ドキュメンテーション』を参照してください。ColdFusionサーバの使用可能なデータソースを展開し、cfdocexamplesデータソースを展開し、「テーブル」をクリックしてテーブルの選択肢を展開します。Employeeテーブルをダブルクリックします。Employeeテーブルがクエリービルダーの上部に表示されます。
Emp_ID、FirstName、LastName、Dept_ID、Salary、およびContractのフィールドをダブルクリックします。.Dept_IDでは、「Output」チェックボックスをオフにして、このフィールドがレポートの一部として実際には表示されないようにします。ただし、これはSQL Where節の一部となります。Dept_ID」行の「Condition」列で、ポップアップメニューから「Where」を選択します。「Criteria」列から「= #CFvariable#」を選択します。これが"#CFvariable#"オプションではなく、引用符のないオプションであることに注意してください。このオプションを選択すると、SQLクエリーが次のパネルで作成されるか、変更されます。SQLクエリーパネルでWhere節を変更します。Where節の値、CFvariableをparam.DeptIDと置き換えます。変数の周りのシャープ記号は削除しないでください。変数を変更することにより、クエリーは、後で作成するレポートの入力パラメータを参照します。クエリーは図5のようになります。
図5.クエリービルダーウィザードでのクエリーの作成
レポートレイアウトページで「Only Detail Band」オプションを選択します。「数値フィールドの合計の作成」オプションの選択を解除します。「次へ」をクリックします。
メモ:この時点で「Default」オプションを選択すると、レポートは正しく実行されます。
param.DeptIDに対応しています。「OK」をクリックします。「名前」にDeptIDと入力し、ポップアップリストから「#query.Dept_ID#」を選択します(図6を参照)。
図6.サブレポートパラメータダイアログボックス
図7.最終的なレポート
これで作業は終了です。メインレポートからのサブレポートの作成に成功しました。
この記事では、サブレポートをメインレポートにリンクする2つの異なる手法について説明しました。サブレポートコンポーネントでパラメータプロパティをバインドできますが、これは、レポートをリンクするサブレポート自体の入力パラメータに対応しています。サブレポートウィザードを使用したサブレポートの作成(2番目の例)の方が簡単で、メインレポートを使用してサブレポートをフォーマットする場合の推量による操作が少ないことがわかっています。
サンプルレポートを使用してサブレポートを作成することにより、サブレポートを作成し、メインレポートにリンクする操作が簡単になることがわかります。これはColdFusion Report Builderの使用に役立ちます。その結果、ほとんど問題なくレポートを作成し、サブレポートをリンクできるようになると確信しています。
ColdFusionを使用したレポートの作成について詳しくは、次を参照してください。
Jim Bambroughは、3年間フェニックス州の高校で数学とコンピュータプログラミングを教えていました。現在Jimは、アリゾナ州チャンドラのAmkor Technology*で、Webアプリケーションの開発者として勤務しています。Jimは、2000年からITに携わっており、2003年以降は企業レベルのWebベースのレポートを開発しています。