サブレポートでパラメータを使用すると、サブレポートを親レポートに接続できます。親レポートをサブレポートに連結するフィールドのパラメータを設定することにより、親レポートはパラメータを通じて情報をサブレポートに渡すことができます。このチュートリアルでは、パラメータを使用して、レポートとサブレポートをリンクさせる方法について説明します。
このトピックでは、以下のタスクを行います。
チュートリアルを完了すると、次のようなレポートが作成されます。
Visual Studioプロジェクトに親レポートとサブレポートを追加する
詳細は、「クイックスタート」参照してください。
親レポートをデータソースに接続する
| SQLクエリ | 
                                 
                                    コードのコピー
                                 
                             | 
                        
|---|---|
| Select * from suppliers order by country | |
パラメータを使用して、サブレポートをデータソースに接続する
| SQLクエリ | 
                                 
                                    コードのコピー
                                 
                             | 
                        
|---|---|
| SELECT * FROM products INNER JOIN categories ON products.categoryid = categories.categoryid WHERE products.supplierID =<%SupplierID%> | |
親レポート(rptParent)のレイアウトを作成する
| プロパティ名 | プロパティの値 | 
|---|---|
| Name | ghSuppliers | 
| DataField | Country | 
TextBox
| プロパティ名 | プロパティの値 | 
|---|---|
| DataField | Country | 
| Name | txtCountry | 
| Text | Country | 
| Location | 0, 0 | 
| Font | MS ゴシック, 13pt, style=Bold | 
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
| プロパティ名 | プロパティの値 | 
|---|---|
| DataField | CategoryName | 
| Name | txtCategoryName | 
| Text | Category Name | 
| Location | 0.0625, 0.0625 | 
| Size | 2.042, 0.2 in | 
| Style | color: Maroon; font-weight: bold | 
TextBox
| プロパティ名 | プロパティの値 | 
|---|---|
| DataField | ProductName | 
| Name | txtProductName | 
| Text | Product Name | 
| Location | 0.0625, 0.0625 | 
| Size | 1.99, 0.2 in | 
| Style | color: Red | 
サブレポートを現在のレコードの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に設定するコードを追加する
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;
}
                                 | 
                            |
レポートを表示する