サブレポートでパラメータを使用すると、サブレポートを親レポートに接続できます。親レポートをサブレポートに連結するフィールドのパラメータを設定することにより、親レポートはパラメータを通じて情報をサブレポートに渡すことができます。このチュートリアルでは、パラメータを使用して、レポートとサブレポートをリンクさせる方法について説明します。
このトピックでは、以下のタスクを行います。
- Visual Studioプロジェクトに親レポートとサブレポートを追加する
- 親レポートをデータソースに接続する
- パラメータを使用して、サブレポートをデータソースに接続する
- 親レポート(rptParent)のレイアウトを作成する
- サブレポート(rptChild)のレイアウトを作成する
- サブレポートを現在のレコードのsupplierIDに連結するために必要なコードを追加する
- サブレポートのShowParametersUIプロパティをFalseに設定するコードを追加する
- レポートを表示する
チュートリアルを完了すると、次のようなレポートが作成されます。
 |
メモ: このチュートリアルはNWindデータベースを使用しています。NorthWindデータベース(Nwind.mdb)へのアクセス権限が必要です。 |
 |
注意: サブレポートは、ページヘッダ/フッタのセクションを描画しません。 |
Visual Studioプロジェクトに親レポートとサブレポートを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログ から [ActiveReports 12.0 セクションレポート(コード)]を選択し、ファイル名を「rptParent」に変更します。
- [追加]のボタンをクリックします。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログ から [ActiveReports 12.0 セクションレポート(コード)]を選択し、ファイル名を「rptChild」に変更します。
- [追加]のボタンをクリックします。
詳細は、「プロジェクトにレポートを追加する」参照してください。
親レポートをデータソースに接続する
- Detailセクションのバンドから、[データソース]アイコンをクリックします。

- [レポートデータソース]ダイアログで、[接続文字列]の横にある[OLE DB]タブの[作成]ボタンをクリックします。 詳細は、「レポートとデータソースの連結」を参照してください。
- [データリンクプロパティ]ウィンドウで、[Microsoft Jet 4.0 OLE DB Provider]を選択し、[次へ]ボタンをクリックして、[接続]タブへ移動します。
- (...)をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスの選択が完了したら、[開く]をクリックします。
- [接続のテスト]ボタンをクリックし、データベースへの接続を確認します。
- [OK]をクリックし、[レポートデータソース]ダイアログに戻ります。[接続文字列]フィールドで、テキストが自動的に追加されます。
-
[OLE DB]タブの[クエリ]フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
Select * from suppliers order by country |
- [OK] をクリックします。
パラメータを使用して、サブレポートをデータソースに接続する
- Detailセクションのバンドから、[データソース]アイコンをクリックします。

- [レポートデータソース]ダイアログで、[接続文字列]の横にある[OLE DB]タブの[作成]ボタンをクリックします。 詳細は、「レポートとデータソースの連結」を参照してください。
- [データリンクプロパティ]ウィンドウで、[Microsoft Jet 4.0 OLE DB Provider]を選択し、[次へ]ボタンをクリックして、[接続]タブへ移動します。
- (...)をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスの選択が完了したら、[開く]をクリックします。
- [接続のテスト]ボタンをクリックし、データベースへの接続を確認します。
- [OK]をクリックし、[レポートデータソース]ダイアログに戻ります。[接続文字列]フィールドで、テキストが自動的に追加されます。
-
[OLE DB]タブの[クエリ]フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
SELECT * FROM products INNER JOIN categories ON products.categoryid = categories.categoryid WHERE products.supplierID =<%SupplierID%> |
- [OK] をクリックします。
親レポート(rptParent)のレイアウトを作成する
- レポートのページヘッダを削除するために、ページヘッダまたはページフッタを選択した後、右クリックして[削除]を選択します。
- レポートのデザイナ面を右クリックし、[挿入]を選択して、[グループヘッダ/フッタ]を選択します。
- グループヘッダのセクションを選択して、[プロパティ]ウィンドウで以下の変更を加えます。
プロパティ名 |
プロパティの値 |
Name |
ghSuppliers |
DataField |
Country |
- ツールボックスから、グループヘッダのセクション上にTextBoxコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox
プロパティ名 |
プロパティの値 |
DataField |
Country |
Name |
txtCountry |
Text |
Country |
Location |
0, 0 |
Font |
MS ゴシック, 13pt, style=Bold |
- ツールボックスからDetailセクションに以下のコントロールを追加し、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox1
プロパティ名 |
プロパティの値 |
DataField |
CompanyName |
Name |
txtCompanyName |
Text |
Company Name |
Location |
0.0625, 0.0625 |
Size |
2.25, 0.2 in |
Style |
background-color: Silver; font-weight: bold |
TextBox2
プロパティ名 |
プロパティの値 |
DataField |
ContactName |
Name |
txtContactName |
Text |
Contact Name |
Location |
2.312, 0.0625 |
Size |
2.25, 0.2 in |
Style |
background-color: Silver; font-weight: bold |
TextBox3
プロパティ名 |
プロパティの値 |
DataField |
Phone |
Name |
txtPhone |
Text |
Phone |
Location |
4.562, 0.0625 |
Size |
1.542, 0.2 in |
Style |
background-color: Silver; font-weight: bold |
SubReport
プロパティ名 |
プロパティの値 |
Name |
Subreport1 |
ReportName |
ProductName |
Location |
0.0625, 0.312 |
サブレポート(rptChild)のレイアウトを作成する
- レポートのページヘッダを削除するために、ページヘッダまたはページフッタを選択した後、右クリックして[削除]を選択します。
- レポートのデザイナ面を右クリックし、[挿入]を選択して、[グループヘッダ/フッタ]を選択します。
- グループヘッダのセクションを選択して、[プロパティ]ウィンドウで以下の変更を加えます。
プロパティ名 |
プロパティの値 |
Name |
ghProducts |
DataField |
CategoryName |
- ツールボックスから、グループヘッダのセクション上にTextBoxコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox
プロパティ名 |
プロパティの値 |
DataField |
CategoryName |
Name |
txtCategoryName |
Text |
Category Name |
Location |
0.0625, 0.0625 |
Size |
2.042, 0.2 in |
Style |
color: Maroon; font-weight: bold |
- ツールボックスからDetailセクションにTextBoxコントロールをドラッグし、、[プロパティ]ウィンドウから以下のプロパティを設定します。
TextBox
プロパティ名 |
プロパティの値 |
DataField |
ProductName |
Name |
txtProductName |
Text |
Product Name |
Location |
0.0625, 0.0625 |
Size |
1.99, 0.2 in |
Style |
color: Red |
サブレポートを現在のレコードのsupplierIDに連結するために必要なコードを追加する
- 親レポートのDetailセクションをダブルクリックし、レポートのDetail_Formatイベントのイベント処理メソッドを作成します。
- サブレポートを現在のレポートのsupplierIDに連結するには、以下のコードを追加します。
Visual Basic
Visual Basicコード (Formatイベント内に貼り付けます) |
コードのコピー
|
Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format
Dim rpt As New rptChild()
Me.Subreport1.Report = rpt
End Sub
|
C#
C#コード (Formatイベント内に貼り付けます) |
コードのコピー
|
private void Detail_Format(object sender, System.EventArgs eArgs)
{
rptChild rpt = new rptChild();
this.Subreport1.Report = rpt;
}
|
サブレポートのShowParametersUIプロパティをFalseに設定するコードを追加する
- rptChildのデザイナ面のグレーの領域をダブルクリックし、rptChildのReportStartイベントのイベント処理メソッドを作成します。
- サブレポートのShowParametersUIプロパティをFalseに設定するために次のコードを追加します。
Visual Basic
Visual Basicコード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
Private Sub rptChild_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart
Me.ShowParameterUI = False
End Sub
|
C#
C#コード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
private void rptChild_ReportStart(object sender, System.EventArgs eArgs)
{
this.ShowParameterUI = false;
}
|
レポートを表示する
- デザイン時にレポートを表示するには、プレビュータブをクリックします。
または
関連トピック