GrapeCity ActiveReports for .NET 16.0J
サブレポートでパラメータの使用
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > パラメータ > サブレポートでパラメータの使用

サブレポートでパラメータを使用すると、サブレポートを親レポートに接続できます。親レポートをサブレポートに連結するフィールドのパラメータを設定することにより、親レポートはパラメータを通じて情報をサブレポートに渡すことができます。このチュートリアルでは、パラメータを使用して、レポートとサブレポートをリンクさせる方法について説明します。

このトピックでは、以下のタスクを行います。

チュートリアルを完了すると、次のようなレポートが作成されます。

メモ: このチュートリアルはNWindデータベースを使用しています。NorthWindデータベース(Nwind.mdb)へのアクセス権限が必要です。
注意: サブレポートは、ページヘッダ/フッタのセクションを描画しません。

Visual Studioプロジェクトに親レポートとサブレポートを追加する

  1. Visual Studioで新規プロジェクトを開きます。
  2. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  3. [新しい項目を追加]ダイアログ から [ActiveReports 16.0 セクションレポート(コード)]を選択し、ファイル名を「rptParent」に変更します。
  4. [追加]のボタンをクリックします。
  5. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  6. [新しい項目を追加]ダイアログ から [ActiveReports 16.0 セクションレポート(コード)]を選択し、ファイル名を「rptChild」に変更します。
  7. [追加]のボタンをクリックします。

詳細は、「クイックスタート」参照してください。

親レポートをデータソースに接続する

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

パラメータを使用して、サブレポートをデータソースに接続する

  1. Detailセクションのバンドから、[データソース]アイコンをクリックします。
  2. [レポートデータソース]ダイアログで、[接続文字列]の横にある[OLE DB]タブの[作成]ボタンをクリックします。 詳細は、「レポートとデータソースの連結」を参照してください。
  3. [データリンクプロパティ]ウィンドウで、[Microsoft Jet 4.0 OLE DB Provider]を選択し、[次へ]ボタンをクリックして、[接続]タブへ移動します。
  4. (...)をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスの選択が完了したら、[開く]をクリックします。
  5. [接続のテスト]ボタンをクリックし、データベースへの接続を確認します。
  6. [OK]をクリックし、[レポートデータソース]ダイアログに戻ります。[接続文字列]フィールドで、テキストが自動的に追加されます。
  7. [OLE DB]タブの[クエリ]フィールドに以下のSQLクエリを入力します。
    SQLクエリ
    コードのコピー
    SELECT * FROM products INNER JOIN categories ON products.categoryid = categories.categoryid WHERE products.supplierID =<%SupplierID%>
  8. [OK] をクリックします。

親レポート(rptParent)のレイアウトを作成する

  1. レポートのページヘッダを削除するために、ページヘッダまたはページフッタを選択した後、右クリックして[削除]を選択します。
  2. レポートのデザイナ面を右クリックし、[挿入]を選択して、[グループヘッダ/フッタ]を選択します。
  3. グループヘッダのセクションを選択して、[プロパティ]ウィンドウで以下の変更を加えます。              
    プロパティ名 プロパティの値
    Name ghSuppliers
    DataField Country
  4. ツールボックスから、グループヘッダのセクション上にTextBoxコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。

    TextBox

    プロパティ名 プロパティの値
    DataField Country
    Name txtCountry
    Text Country
    Location 0, 0
    Font MS ゴシック, 13pt, style=Bold
  5. ツールボックスから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)のレイアウトを作成する

  1. レポートのページヘッダを削除するために、ページヘッダまたはページフッタを選択した後、右クリックして[削除]を選択します。
  2. レポートのデザイナ面を右クリックし、[挿入]を選択して、[グループヘッダ/フッタ]を選択します。
  3. グループヘッダのセクションを選択して、[プロパティ]ウィンドウで以下の変更を加えます。              
    プロパティ名 プロパティの値
    Name ghProducts
    DataField CategoryName
  4. ツールボックスから、グループヘッダのセクション上に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
  5. ツールボックスから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に連結するために必要なコードを追加する

  1. 親レポートのDetailセクションをダブルクリックし、レポートのDetail_Formatイベントのイベント処理メソッドを作成します。
  2. サブレポートを現在のレポートの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に設定するコードを追加する

  1. rptChildのデザイナ面のグレーの領域をダブルクリックし、rptChildのReportStartイベントのイベント処理メソッドを作成します。
  2. サブレポートの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;
    }
    

レポートを表示する

または