ActiveReports 15 .NET Edition
ActiveReports 15 User Guide / Samples and Walkthroughs / Walkthroughs / Section Report Walkthroughs / Parameters / Using Parameters in Sub Reports
In This Topic
    Using Parameters in Sub Reports
    In This Topic

    Using parameters in SubReport, you can connect a SubReport to the parent report. By setting the parameter on the field that binds the parent report to SubReport, the parent report passes the data to display in SubReport through a parameter. This walkthrough illustrates the method to link the main report with a SubReport using parameters. 

    This walkthrough is split up into the following activities:

    Note: This walkthrough uses tables from the NorthWind database. The NWIND.mdb file can be downloaded from GitHub: ..\Samples15\Data\NWIND.mdb.
    Caution: SubReports do not render PageHeader and PageFooter sections.

    When you complete this walkthrough you get a layout that looks similar to the following:

    Using Parameters in Sub Report

    Using Parameters in Sub Report

    To add an ActiveReport to the Visual Studio project

    1. Create a new Visual Studio project.
    2. From the Project menu, select Add New Item.
    3. In the Add New Item dialog that appears, select ActiveReports 15 Section Report (code-based) and in the Name field, rename the file as rptParent.
    4. Click the Add button to open a new section report in the designer.
    5. From the Project menu, select Add New Item.
    6. In the Add New Item dialog that appears, select ActiveReports 15 Section Report (code-based) and in the Name field, rename the file as rptChild.
    7. Click the Add button to open a second new section report in the designer.

    See Basic Concepts for information on adding different report layouts.

    To connect the parent report (rptParent) to a data source

    1. On the detail section band, click the Data Source Icon.
      Data Source Icon
    2. In the Report Data Source dialog that appears, from the OLE DB tab, create a data source connection. See Bind Reports to a Data Source for further details.
    3. Once the connection string field is populated, in the Query field, enter the following SQL query.
      SQL Query
      Copy Code
      Select * from suppliers order by country
      
    4. Click OK to save the data source and return to the report design surface.

    To connect the child report (rptChild) to a data source using parameter

    1. On the detail section band, click the Data Source Icon.
      Data Source Icon
    2. In the Report Data Source dialog that appears, from the OLE DB tab, create a data source connection. See Bind Reports to a Data Source for further details.
    3. Once the connection string field is populated, in the Query field, enter the following parameterized SQL query.
      SQL Query
      Copy Code
      SELECT * FROM products INNER JOIN categories ON products.categoryid = categories.categoryid WHERE Products.SupplierID = <%SupplierID%>
      
    4. Click OK to save the data source and return to the report design surface.

    To create a layout for the parent report (rptParent)

    1. On the design surface, right click the PageHeader or PageFooter section and select Delete to remove the PageHeader/Footer pair.
    2. Right click on the design surface of the parent report and insert GroupHeader/Footer section pair.
    3. Click the GroupHeader section to select it and go to the Properties window to set the following properties. 
      Property Name Property Value
      Name ghSuppliers
      DataField Country
    4. From the toolbox, drag a TextBox control onto the groupHeader section and in the Properties window, set the properties as follows:
      Property Name Property Value
      DataField Country
      Name txtCountry
      Text Country
      Location 0, 0
      Font Name:Arial, Size:13pt, Bold:True
    5. Click the Detail section to select it and go to the Properties window to set the CanShrink property to True.
    6. From the Visual Studio toolbox, drag and drop the following controls onto the detail section of the report and in the Properties window, set their properties as given below:

      TextBox1

      Property Name Property Value
      DataField CompanyName
      Name txtCompanyName
      Text Company Name
      Location 0.0625, 0.0625
      Size 2.25, 0.2 in
      BackColor Silver
      Font Bold:True

      TextBox2

      Property Name Property Value
      DataField ContactName
      Name txtContactName
      Text Contact Name
      Location 2.312, 0.0625
      Size 1.708, 0.2 in
      BackColor Silver
      Font Bold:True

      TextBox3

      Property Name Property Value
      DataField Phone
      Name txtPhone
      Text Phone
      Location 4.562, 0.0625
      Size 1.542, 0.2 in
      BackColor Silver
      Font Bold:True

      SubReport

      Property Name Property Value
      Name Subreport1
      ReportName ProductName
      Location 0.0625, 0.312

    To create a layout for the child report (rptChild)

    1. On the design surface, right click the PageHeader or PageFooter section and select Delete to remove the PageHeader/Footer pair.
    2. Right click on the design surface of the child report and insert GroupHeader/Footer section pair.
    3. Click the GroupHeader section to select it and go to the Properties window to set the following properties. 
      Property Name Property Value
      Name ghProducts
      DataField CategoryName
    4. From the toolbox, drag and drop a TextBox control onto the groupHeader section and in the Properties window, set the following properties.
      Property Name Property Value
      DataField CategoryName
      Name txtCategoryName
      Text Category Name
      Location 0.0625, 0.0625
      Size 2.042, 0.2 in
      ForeColor Maroon
      Font Bold:True
    5. Click the Detail section to select it and go to the Properties window to set the CanShrink property to True
    6. From the toolbox, drag and drop a TextBox control onto the detail section and in the Properties window, set the following properties.
      Property Name Property Value
      DataField ProductName
      Name txtProductName
      Text Product Name
      Location 0.0625, 0.0625
      Size 1.99, 0.2 in
      ForeColor Red

    To connect the child report (rptChild) to the SubReport control in parent report (rptParent)

    1. Double-click the gray area around the parent report (rptParent) to create an event-handling method for the ReportStart event.
    2. Add code like the following to the handler to create a new instance of the child report (rptChild).

      To write the code in Visual Basic

      Visual Basic.NET code. Paste JUST ABOVE the ReportStart event.
      Copy Code
      Dim rpt As rptChild
      
      Visual Basic.NET code. Paste INSIDE the ReportStart event.
      Copy Code
      rpt = New rptChild()
      

      To write the code in C#

      C# code. Paste JUST ABOVE the ReportStart event.
      Copy Code
      private rptChild rpt;
      
      C# code. Paste INSIDE the ReportStart event.
      Copy Code
      rpt = new rptChild();
    3. Double-click the detail section of the parent report (rptParent) to create a detail_Format event.
    4. Add code like the following to the handler to display a report in the SubReport control.

      To write the code in Visual Basic

      Visual Basic.NET code. Paste INSIDE the Format event.
      Copy Code
      Me.SubReport1.Report = rpt
      

      To write the code in C#

      C# code. Paste INSIDE the Format event.
      Copy Code
      this.subReport1.Report = rpt;

    To set the ShowParametersUI property of SubReport to False

    1. Click the gray area around the child report (rptChild) and go to the Properties window to set the ShowParameterUI property to False.

    To view the report

    • Click the preview tab to view the report at design time.

    OR