If the table data region in a report layout spans more than one page, then you must use the SetData and GetData functions on reports that have dynamic headers so that the header information is displayed on subsequent pages, not only on the first page.

For reports, such as document reports, that have table data regions that span more than one page and require dynamic header information on each page, you must do the following:

An example of a report that has multiple table data regions and uses functions to save and get header data is report 206, Sales - Invoice, in the CRONUS International Ltd. demonstration database.

To print report header information on multiple pages

  1. In the development environment, on the Tools menu, choose Object Designer.

  2. In Object Designer, choose Report, select a report that you want to modify, and then choose the Design button.

  3. On the View menu, choose Layout.

  4. In Microsoft Visual Studio, on the Report menu, choose Report Properties.

  5. In the Report Properties window, on the Code tab, add the following code to the Custom code text box.

    Note
    This example groups the data into four groups. You can modify the code if you need a different number of groups.

    Note
    To view this code in a report in the CRONUS International Ltd. demonstration database, see report 206, Sales - Invoice.

    Visual Basic Copy Code
    Shared Data1 as Object
    Shared Data2 as Object
    Shared Data3 as Object
    Shared Data4 as Object
    Public Function GetData(Num as Integer, Group as integer) as Object
    if Group = 1 then
       Return Cstr(Choose(Num, Split(Cstr(Data1),Chr(177))))
    End If
    if Group = 2 then
       Return Cstr(Choose(Num, Split(Cstr(Data2),Chr(177))))
    End If
    if Group = 3 then
       Return Cstr(Choose(Num, Split(Cstr(Data3),Chr(177))))
    End If
    if Group = 4 then
       Return Cstr(Choose(Num, Split(Cstr(Data4),Chr(177))))
    End If
    End Function
    Public Function SetData(NewData as Object,Group as integer)
      If Group = 1 and NewData > "" Then
          Data1 = NewData
      End If
      If Group = 2 and NewData > "" Then
          Data2 = NewData
      End If
      If Group = 3 and NewData > "" Then
          Data3 = NewData
      End If
      If Group = 4 and NewData > "" Then
          Data4 = NewData
      End If
      Return True
    End Function
    
  6. In the body of the report.rdlc file, create one or more hidden text boxes to get the header data. For example, in report 206, a hidden text box starts with the following:

    =Cstr(Fields!CustAddr1.Value) + Chr(177) + Cstr(Fields!CustAddr2.Value) + Chr(177) + Cstr(Fields!CustAddr3.Value) + Chr(177) + Cstr(Fields!CustAddr4.Value) + Chr(177) + Cstr(Fields!CustAddr5.Value) + Chr(177) + Cstr(Fields!CustAddr6.Value) + Chr(177) + Cstr(Fields!CustAddr7.Value) + Chr(177) + Cstr(Fields!CustAddr8.Value) + Chr(177) + Cstr(Fields!BilltoCustNo_SalesInvHdr.Value) + Chr(177) + Cstr(Fields!VATRegNo_SalesInvHdr.Value) + Chr(177) + …

    Note
    Chr(177) is used in this example to separate the data. When you call the GetData function, it splits the data by using Chr(177) as a separator.

    For more information about how to create hidden fields, see How to: Add and Identify Hidden Fields.

  7. In the header of the report.rdlc file, create one or more text boxes to save the data from the hidden text box in the body section. For example, in report 206, a blank text box is in the header section. It has the following expression as the value of its Hidden property:

    =Code.SetData(ReportItems!CustAddr.Value,1)

    The first parameter in the SetData function call corresponds to the name of the text box in the body section. The second parameter corresponds to the group number.

  8. In the header section of the report.rdlc file, create the text boxes for displaying data. The source expression for each text box must call the GetData function with the following two parameters:

    • The number of the variable in the group.
    • The number of the group.

    For example, Code.GetData(2,1) gets the second piece of data from group 1, which is CustAddr2.Value in group 1.

  9. Save and compile the report.

See Also