アクセシビリティ
デベロッパーリソース

ColdFusion Report Builderの使用 – パート1:レポートおよびサブレポートの作成

Jim Bambrough

www.amkor.com*

ColdFusion MX 7を使用すると、より詳細なレポートを表示するためのサブレポートを使用できます。サブレポートは、簡単に言うと、別のレポートに埋め込まれるかネストされたレポートです。この記事では、以後、サブレポートを含むレポートをメインレポートと呼ぶことにします。通常、サブレポートとメインレポートは内容的に関連しています。

ColdFusionでのレポート作成に関するこの記事では、サブレポートをメインレポートにリンクする2つのテクニックについて説明します。中でも、ColdFusion Report Builderを使用したサブレポートのリンクに重点を置いて説明します。

この記事では、サブレポートをメインレポートにリンクするために使用する、レポートとパラメータのバインド方法を含むいくつかの重要な概念を取り上げます。サブレポートのリンク方法については、次の2つのテクニックを説明します。

Javaアプレットによるレポートアプリケーションのサポートという困難な課題に取り組み、それを大変な思いで成し遂げた経験を持つ私は、ColdFusionが提供するレポート作成の新たな枠組みによって開発がシンプルで容易になったことのありがたさを実感しています。皆さんも、この記事をお読みになれば、ColdFusion MX 7のColdFusionレポート機能によってもたらされるパワーと迅速な開発のすばらしさをご理解いただけるでしょう。

必要条件

ColdFusion MX 7.0.1

メモ:ColdFusion MX 7を既にインストール済みの場合は、ColdFusion 7.0.1アップデータをインストールしてください。また、ColdFusionに付属するColdFusionサンプルアプリケーションもインストールしてください。サンプルアプリケーションをまだインストールしていない場合は、ColdFusionインストーラを再度実行し、インストール手順の中で「サンプルアプリケーション」を選択してください。

ColdFusion Report Builder

チュートリアルおよびサンプルファイル:

前提知識

ColdFusionの基礎知識およびレポート作成の経験などのスキルがあることが推奨されます。ただし、この記事では、それらのスキルを前提とせずに、サンプルサブレポートを使用して手順を追って説明していきます。ColdFusionでのレポート作成が初めての場合は、Collin Tobin氏とDean Harmon氏による「ColdFusion MX 7を利用したレポート作成」をお読みください。

ColdFusionでのレポート作成

多くの企業に共通する業務の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ツールには、ラベルやフィールドコンポーネントなどのさまざまなコンポーネントが用意されており、それぞれが独自のプロパティセットを持っています。プロパティインスペクタでレポートの特定のコンポーネントまたは要素をハイライトすると、そのプロパティを変更することができます。このチュートリアルでは、サブレポートコンポーネントを使用して、メインレポートと既存のサブレポート、およびメインレポートと新しいサブレポートをリンクします。

Subreportコンポーネントが選択されたReport Builderのツールボックス

図1. Subreportコンポーネントが選択されたReport Builderのツールボックス

メインレポートにサブレポートを埋め込むには、このSubreportコンポーネントを使用します。次のセクションでは、サブレポートパラメータを使用してサブレポートをメインレポートにバインドする方法について説明します。

パラメータを使用したメインレポートに対するサブレポートのバインド

一般に、メインレポートのクエリーから、パラメータとして値をサブレポートに渡すことにより、サブレポートをメインレポートにリンクできます。この値によって、サブレポートクエリーのデータがフィルタされます。サブレポートコンポーネントのSubreport Parametersプロパティを通じてレポートをリンクできます。このプロパティは、サブレポートプロパティのDataカテゴリで検索してください(図2を参照)。

Subreport Parametersプロパティ

図2.Subreport Parametersプロパティ

このプロパティは、サブレポートの入力パラメータに対応しています。このプロパティの名前は、サブレポートの入力パラメータの名前に一致していなければなりません。Subreport Parametersパラメータは、通常はメインレポートのクエリーのフィールドにマップされる式です(図3を参照)。このプロパティを表示するには、図2の右下隅にある省略記号(...)をクリックします。

Subreport Parametersの式

図3.Subreport Parametersの式

レポートと既存のサブレポートとのリンク

既存のレポートを、別のレポート内部のサブレポートとしてネストできます。これを行うには、このチュートリアルに含まれるDepartment-EmployeesとCompany-Departmentsという名前のサンプルレポートを使用します。この演習では、Department-Employeesレポートはサブレポートです。

このチュートリアルでは、ColdFusion MX 7とともにサンプルアプリケーションをインストールしているものとします。cfdocexamplesデータベースを指定するcfdocexamplesデータソースを使用します。ColdFusionサンプルアプリケーションをインストールしていない場合は、ColdFusionインストーラをもう一度実行し、サンプルアプリケーションをインストールするオプションを選択してください。

サンプルアプリケーションをインストールしたら、次の手順に従って2つの既存のレポートをリンクします。

  1. Company-Departments.cfrレポートを別のフォルダにコピーし、名前をCompany-Departments_v1.cfrに変更します。次の演習用に元のレポートのコピーを保存します。
  2. Company-Departments_v1.cfrレポートをダブルクリックします。ColdFusion Report Builderが開きます。ColdFusion Report Builderをインストールしていない場合は、ここでインストールします。
  3. レポートの詳細バンドを約1.5インチに拡大します。拡大するには、詳細セクションの下の境界をドラッグするか、詳細セクションをクリックしてハイライト表示し、プロパティインスペクタにHeightプロパティとして1.5と入力します。
  4. ツールボックスのサブレポートコンポーネントをクリックします(図1をもう一度参照)。
  5. 詳細バンドで、十字ポインタを左上から右下にドラッグします。このサイズは、後で必要に応じて変更できます。サブレポートウィザードが表示されます。
  6. 「既存のレポートから」オプションを選択し、省略記号(...)をクリックしてDepartment-Employees.cfrレポートに移動します。「次へ」をクリックします。
  7. サンプルサブレポートは、パラメータを取るように既に設定されているので、サブレポートウィザードでは、次にサブレポートパラメータをバインドするように求められます。DeptIDについては、クエリーの変数が含まれるポップアップリストから選択することができます。ポップアップリストからquery.Dept_IDを選択し、「次へ」をクリックします。
  8. 「終了」をクリックします。
  9. サブレポートコンポーネントのサイズを変更し、クエリーが返すすべてのフィールドを表示します。幅は約6.5インチになるはずです。

この時点で、レポートは図4のようになります。

既存のレポートから作成されたサブレポート

図4.既存のレポートから作成されたサブレポート

レポートを保存し、F12キーを押してプレビューするか、レポートをブラウズします。例えばColdFusionのデフォルトのインストールでは、http://localhost:8500/subreports_example/ Company-Departments_v1.cfrとなります。

メモ:F12キーを押してもレポートのプレビューが表示されない場合は、編集/環境設定を選択します。「Preference Groups」から「サーバー接続」を選択し、ColdFusionサーバを正しく指定するように、「Server Information」の設定を変更します。

新しいサブレポートの作成とレポートへのリンク

既存のサブレポートにリンクするのではなく、サブレポートを簡単に作成することもできます。このセクションでは、次の手順に従って新しいサブレポートを作成し、リンクします。

  1. Company-Departments.cfrレポートを別のフォルダにコピーし、名前をCompany-Departments_v2.cfrに変更します。他のテストに使用できるように、元のレポートのコピーを保存します。Company-Departments_v2.cfrレポートをダブルクリックします。ColdFusion Report Builderが開きます。ColdFusion Report Builderをインストールしていない場合は、ここでインストールします。
  2. レポートの詳細バンドを約1.5インチに拡大します。拡大するには、詳細セクションの下の境界をドラッグするか、詳細セクションをクリックしてハイライト表示し、プロパティインスペクタにHeightプロパティとして1.5と入力します。
  3. ツールボックスのサブレポートコンポーネントをクリックします(図1をもう一度参照)。
  4. 詳細バンドで、十字ポインタを左上から右下にドラッグします。このサイズは、後で必要に応じて変更できます。サブレポートウィザードが表示されます。
  5. 「新規レポートとして」オプションを選択し、「次へ」をクリックします。
  6. 「クエリービルダー」ボタンをクリックし、レコードセットを取得するクエリーを作成します。クエリービルダーウィンドウが表示されます。
  7. RDS用にColdFusionサーバを選択します。

    メモ:RDSサーバを設定していない場合は、ここで設定する必要があります。設定するには、『ColdFusion LiveDocs ドキュメンテーション』を参照してください。ColdFusionサーバの使用可能なデータソースを展開し、cfdocexamplesデータソースを展開し、「テーブル」をクリックしてテーブルの選択肢を展開します。Employeeテーブルをダブルクリックします。Employeeテーブルがクエリービルダーの上部に表示されます。

  8. Emp_IDFirstNameLastNameDept_IDSalary、およびContractのフィールドをダブルクリックします。.
  9. Dept_IDでは、「Output」チェックボックスをオフにして、このフィールドがレポートの一部として実際には表示されないようにします。ただし、これはSQL Where節の一部となります。
  10. Dept_ID」行の「Condition」列で、ポップアップメニューから「Where」を選択します。「Criteria」列から「= #CFvariable#」を選択します。これが"#CFvariable#"オプションではなく、引用符のないオプションであることに注意してください。このオプションを選択すると、SQLクエリーが次のパネルで作成されるか、変更されます。
  11. SQLクエリーパネルでWhere節を変更します。Where節の値、CFvariableparam.DeptIDと置き換えます。変数の周りのシャープ記号は削除しないでください。変数を変更することにより、クエリーは、後で作成するレポートの入力パラメータを参照します。クエリーは図5のようになります。

    クエリービルダーウィザードでのクエリーの作成

    図5.クエリービルダーウィザードでのクエリーの作成

  12. 「クエリーのテスト」ボタンをクリックし、テスト値をと入力して、「Run」をクリックします。クエリーは7個の結果を返します。結果ウィンドウを閉じます。
  13. 「保存」をクリックします。レポートグループの定義ダイアログボックスの「次へ」をクリックします。
  14. レポートレイアウトダイアログボックスで、「グリッド」オプションだけを選択したことを確認します。「次へ」をクリックします。
  15. レポートレイアウトページで「Only Detail Band」オプションを選択します。「数値フィールドの合計の作成」オプションの選択を解除します。「次へ」をクリックします。

    メモ:この時点で「Default」オプションを選択すると、レポートは正しく実行されます。

  16. レポートの題目ダイアログボックスで「次へ」をクリックします。
  17. レポート名ダイアログボックスの3つのタイトルフィールドすべてにEmployees by Deptと入力します。「次へ」をクリックします。
  18. サブレポートバインディングダイアログボックスで「次へ」をクリックします。
  19. サブレポートファイル名で、メインレポートと同じディレクトリに保存します。このレポートの名前をEmployeesにします。「次へ」をクリックします。
  20. 「終了」をクリックします。
  21. Employeesレポートを保存します。
  22. Employeesレポートで、「フィールドとパラメータ」パネルを開きます。この時点でReport Builderの左下隅に表示されていない場合は、ウィンドウ/フィールドとパラメータを選択します。
  23. 「フィールドとパラメータ」パネルで「入力パラメータ」オプションを一度クリックし、プラス(+)ボタンをクリックして入力パラメータを追加します。入力パラメータの追加ダイアログボックスが表示されます。
  24. 「名前」にDeptIDと入力します。データ型として「Integer」を選択します。このパラメータは、前に入力したSQL文のWhere節で参照されるparam.DeptIDに対応しています。「OK」をクリックします。
  25. Employee.cfrレポートを保存し、F12キーを押してプレビューします。DeptIDパラメータとして1と入力します。レポートが表示されます。
  26. Company-Departments_v2.cfrレポートに切り替えます。
  27. サブレポートコンポーネントを一度クリックして選択します。プロパティインスペクタで、プラス(+)記号をクリックしてDataプロパティを展開します。「サブレポートパラメータ」を一度クリックして選択します。
  28. 省略記号(...)をクリックしてパラメータを追加します。サブレポートパラメータダイアログボックスが表示されます。「Add」を追加します。
  29. 「名前」にDeptIDと入力し、ポップアップリストから「#query.Dept_ID#」を選択します(図6を参照)。

    サブレポートパラメータダイアログボックス

    図6.サブレポートパラメータダイアログボックス

  30. 「OK」をクリックし、もう一度「OK」をクリックして、サブレポートパラメータダイアログボックスを閉じます。
  31. Company-Departments_v2レポートを保存します。
  32. レポートをプレビューします(F12キーを押します)。図7のようなレポートが表示されます。
最終的なレポート

図7.最終的なレポート

これで作業は終了です。メインレポートからのサブレポートの作成に成功しました。

高度なリソース

この記事では、サブレポートをメインレポートにリンクする2つの異なる手法について説明しました。サブレポートコンポーネントでパラメータプロパティをバインドできますが、これは、レポートをリンクするサブレポート自体の入力パラメータに対応しています。サブレポートウィザードを使用したサブレポートの作成(2番目の例)の方が簡単で、メインレポートを使用してサブレポートをフォーマットする場合の推量による操作が少ないことがわかっています。

サンプルレポートを使用してサブレポートを作成することにより、サブレポートを作成し、メインレポートにリンクする操作が簡単になることがわかります。これはColdFusion Report Builderの使用に役立ちます。その結果、ほとんど問題なくレポートを作成し、サブレポートをリンクできるようになると確信しています。

ColdFusionを使用したレポートの作成について詳しくは、次を参照してください。

著者について

Jim Bambroughは、3年間フェニックス州の高校で数学とコンピュータプログラミングを教えていました。現在Jimは、アリゾナ州チャンドラのAmkor Technology*で、Webアプリケーションの開発者として勤務しています。Jimは、2000年からITに携わっており、2003年以降は企業レベルのWebベースのレポートを開発しています。