Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

5分でわかるActiveReports帳票-RDLレポート

ActiveReports for .NET 9.0Jで作るサンプル帳票(2)

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

サブレポートの使用

 マルチデータソース対応に加えて、RDLレポートではサブレポートを使用できます。サブレポートとは、別のレポート内に挿入されているレポートのことです。例えば、プロジェクトに2つのレポート(メインレポートおよびサブレポート)を追加し、メインレポート上にSubReportコントロールを配置することで、そこにサブレポートを表示できます。

 サブレポートを使用する場合、メインレポート上に直接配置する場合も考えられますが、実際のケースでは、メインレポートのデータ領域の中にサブレポートを配置する方法が多いと思われます。なお、メインレポートとサブレポートのデータ連結には、パラメータを使用します。

 ここでは、サブレポートを使ったサンプルとして、見積書を作成します。データソースには、製品付属のSeikyu2.mdbデータベースを使用します。

 付属のサンプルは、「03_サブレポートの使用_Main.rdlx」および、「03_サブレポートの使用_Sub.rdlx」をご参照ください。

データセットの作成

 メインレポートのデータセットとして、見積IDと顧客名をグループ化したデータを取得します。

メインレポートのデータセット
SELECT Estimate.EstimateID, Customers.CompanyName FROM Estimate INNER JOIN Customers ON Estimate.CustomerID = Customers.CustomerID GROUP BY Estimate.EstimateID,Customers.CompanyName

 サブレポートのデータセットとして、品名と個数の詳細データを取得します。

サブレポートのデータセット
SELECT Estimate.EstimateID, Products.ProductName, Estimate.Quantity FROM Estimate INNER JOIN Products ON Estimate.ProductID = Products.ProductID

レイアウトの作成

 メインレポートにTableデータ領域を配置し、Tableデータ領域内に、顧客名を表示するTextBoxレポートアイテムおよびSubReportレポートアイテムを配置します。

メインレポートのデザイン画面
メインレポートのデザイン画面

 サブレポートにTableデータ領域を配置し、品名および個数を表示するTextBoxレポートアイテムを配置します。

サブレポートのデザイン画面
サブレポートのデザイン画面

サブレポートの指定

 レポートデザインが完成したら、メインレポートとサブレポートを関連付けます。メインレポートに配置したSubReportコントロールのReportNameプロパティにサブレポート名を設定します。

 さて、この状態で試しにレポートをプレビューしてみると、本来ならば顧客ごとの注文内容を表示したいのですが、すべての顧客の注文内容が表示されてしまいます。

サブレポートにすべての詳細が表示される
サブレポートにすべての詳細が表示される

パラメータの追加

 顧客ごとの注文内容を表示するためには、パラメータを使用してデータを抽出します。

 サブレポートを開き、レポートエクスプローラからパラメータを追加します。パラメータの名前は、デフォルトの「ReportParameter1」でかまいません。次に、サブレポートのデータセットのダイアログで「パラメータ」ページを開いて、パラメータを追加します。パラメータの値には、先ほどレポートに追加した「ReportParameter1」を設定します。

データセットにパラメータを追加する
データセットにパラメータを追加する

 次に、パラメータとデータセットに結びつけるために、SQLクエリを修正します。データセットのEstimateIDが特定の値の時だけのデータ行を抽出するよう、クエリの最後に「WHERE EstimateID = ?」と追加します。

SELECT Estimate.EstimateID, Products.ProductName, Estimate.Quantity FROM Estimate INNER JOIN Products ON Estimate.ProductID = Products.ProductID WHERE EstimateID = ?

備考

 ここでは、データソースの種類がOleDBのため、クエリ中のパラメータ表現として「?」を使っています。記述方法はデータソースの種類で異なります。詳細については、製品ヘルプの[パラメータ]をご参照ください。

 最後に、メインレポートに配置したSubReportコントロールの「Parameters」プロパティを開き、パラメータを追加します。「パラメータ名」には先ほどサブレポートに追加した「ReportParameter1」、「パラメータ値」には渡したいフィールドを指定します。

SubReportコントロールにパラメータを設定する
SubReportコントロールにパラメータを設定する

 以上のパラメータの設定により、顧客ごとの注文内容が表示されるようになります。

パラメータを使用したレポート
パラメータを使用したレポート

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:5分でわかるActiveReports帳票

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5