Global Collections for Expressions in Reports (Visual Studio Report Designer)

Expressions that you write for report definitions that are processed in ReportViewer controls can include references to global object collections. There are five global object collections that you can use: Fields, Globals, Parameters, ReportItems, and User. To access these collections, you can use standard Visual Basic collection syntax. Examples of this syntax are as follows:

  • Collection!ObjectName

    =User!Language

  • Collection.Item("ObjectName")

    =User.Item("Language")

  • Collection("ObjectName")

    =User("Language")

You can also use property syntax to access items in the Globals and User collections. An example of this is as follows:

  • Collection.ObjectName

    =Globals.PageNumber

Members of the Globals and Users collections return variants. If you want to use a global variable in an expression that requires a specific data type, you must first cast the variable. For example, CDate(Globals!ExecutionTime).

Fields

The Fields collection contains the fields within the current data source. Fields are typically used to display data in text boxes in a report, but they can also be used in other report items, properties, and functions. Items within the Fields collection have two properties, Value and IsMissing. The Value property returns the value that was retrieved for the field in the data source. The IsMissing property indicates whether the field exists in the data source. This is useful for queries that return variable sets of fields. The Value property of missing fields is Null.

The most common syntax for accessing a field object is property syntax, for example, Fields!Product.Value. You can also use the collection syntax described above. Some data sources provide additional properties for a field. You can access these properties using the collection syntax. If the data source does not support the property, or the field is not found when the query is executed, the value for the property is Null for properties of type String and Object, and zero for properties of type Integer.

A report contains one virtual Fields collection for each data source in the report. Fields must be unique within a collection, but the same field name can exist in multiple collections. When referring to a field within a data region, the data table or Business object for the data region determines which collection is used. When referring to a field within an aggregate expression, the data source for the scope determines which collection is used.

Globals

The Globals collection contains the global variables for the report. The following table describes the members of the Globals collection.

Member Type Description

ExecutionTime

DateTime

The date and time that the report began to run.

PageNumber

Integer

The current page number. Can be used only in page header and footer.

ReportFolder

String

The full path to the folder containing the report. This does not include the report server URL. This member only applies to server reports.

ReportName

String

The name of the report as it is stored in the report server database. This member only applies to server reports.

ReportServerUrl

String

The URL of the report server on which the report is being run. This member only applies to server reports.

TotalPages

Integer

The total number of pages in the report. Can be used only in page header and footer.

Examples of global variables are as follows:

  • This expression, placed in a text box in the footer of a report, provides page number and total pages in the report.

    =Globals.PageNumber & " of " & Globals.TotalPages
    
  • This expression provides the name of the report and the time it was run. The time is formatted with the .NET Framework formatting string for short date.

    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
    

Parameters

The Parameters collection contains the report parameters within the report. Parameters can be used in filters or in other functions that alter the report appearance based on the parameter. Items within the Parameters collection have two properties, Value and Label. The Value property returns the value for the parameter, for example, EmployeeID. The Label property returns the user-friendly label for the parameter, for example, EmployeeName. If no label is specified, the value of the Label property is the same as the Value property. If more than one label is associated with the same value, the first matching label is used. Parameters can be accessed through either the property syntax or the collection syntax.

ReportItems

The ReportItems collection contains the text boxes within the report. Items within the ReportItems collection have only one property: Value. The value for a ReportItems item can be used to display or calculate data from another field in the report. To access the value of the current text box, use Me.Value or simply Value. Me.Value and Value cannot be used inside aggregate functions. Use the full syntax to access the value of a text box from within one of these functions.

An example of a report item expression is as follows:

  • This expression, placed in a text box, displays the value of a text box named Textbox1.

    =ReportItems!Textbox1.Value
    

User

The User collection contains data for the user that is running the report. The following table describes the members of the User collection.

Member Type Description

Language

String

The language ID of the user running the report.

UserID

String

The ID of the user running the report.

See Also

Concepts

ReportViewer Controls (Visual Studio)
Using Expressions in a Report (Visual Studio Report Designer)
Defining Report Parameters in a Report (Visual Studio Report Designer)
Adding Page Headers and Page Footers to a Report (Visual Studio Report Designer)
Configuring ReportViewer for Remote Processing