ダウンロード サンプルファイル (45.7 KB)
サブレポートの使用
マルチデータソース対応に加えて、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」、「パラメータ値」には渡したいフィールドを指定します。
以上のパラメータの設定により、顧客ごとの注文内容が表示されるようになります。
この記事は参考になりましたか?
- この記事の著者
-
グレープシティ株式会社 ActiveReportsチーム(グレープシティカブシキガイシャ アクティブレポートチーム)
宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 ActiveReportsは、帳票開発に必要なあらゆる機能を備えた当社を代表するコンポーネントの1つ。1998年の発売以来、日本だけでなく全世界で多数の帳票開発者に使用されています。製品開発は同チームが中心になり、「日本仕様」の厳しい要望を実現することを目指しています。...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
