在表达式中使用内置集合(Report Builder 3.0 和 SSRS)
在报表的表达式中,可以包含对以下内置集合的引用:ReportItems、Parameters、Fields、DataSets、DataSources、Variables 和全局信息的内置字段(如报表名称)。并非所有集合都显示在**“表达式”**对话框中。DataSets 和 DataSources 集合只有在运行时报表将发布到报表服务器之后才可用。ReportItems 集合是报表区域中的文本框集合,例如页面或页眉中的文本框。
有关详细信息,请参阅表达式(Report Builder 3.0 和 SSRS)。
注意 |
---|
在 Business Intelligence Development Studio 中,您可以在 Report Builder 3.0 和报表设计器中创建和修改报表定义 (.rdl)。每个创作环境提供了不同的方式来创建、打开和保存报表和相关项。有关详细信息,请参阅 Web 上 microsoft.com 中的“在报表设计器和 Report Builder 3.0 中设计报表 (SSRS)”。 |
了解内置集合
下表列出了编写表达式时可使用的内置集合。无论能否使用“表达式”对话框以交互方式添加对集合、示例和说明(包含集合值何时初始化以及何时可供使用的信息)的引用,每行都包括集合的区分大小写编程名称。
内置集合 |
“表达式”对话框中的类别 |
示例 |
说明 |
---|---|---|---|
Globals |
内置字段 |
=Globals.ReportName - or - =Globals.PageNumber |
表示对报表有用的全集变量,如报表名称或页码。始终可用。 有关详细信息,请参阅使用内置的全局和用户引用(Report Builder 3.0 和 SSRS)。 |
User |
内置字段 |
=User.UserID -或- =User.Language |
表示与运行报表的用户有关的数据的集合,如语言设置或用户 ID。始终可用。 有关详细信息,请参阅使用内置的全局和用户引用(Report Builder 3.0 和 SSRS)。 |
Parameters |
参数 |
=Parameters("ReportMonth").Value -或- =Parameters!ReportYear.Value |
表示报表参数的集合,每个参数都可为单值或多值参数。直到处理初始化完成之后才可用。有关详细信息,请参阅使用 Parameters 集合引用(Report Builder 3.0 和 SSRS)。 |
Fields(<Dataset>) |
字段 |
=Fields!Sales.Value |
表示可用于报表的数据集的字段集合。将数据从数据源检索到数据集中之后可用。有关详细信息,请参阅在表达式中使用数据集字段集合引用(Report Builder 3.0 和 SSRS)。 |
DataSets |
不显示 |
=DataSets("TopEmployees").CommandText |
表示从报表定义的主体中引用的数据集的集合。不包括仅在页眉或页脚中使用的数据源。无法在本地预览中使用。有关详细信息,请参阅使用 DataSources 和 DataSets 集合引用(Report Builder 3.0 和 SSRS)。 |
DataSources |
不显示 |
=DataSources("AdventureWorks").Type |
表示从报表的主体中引用的数据源集合。不包括仅在页眉或页脚中使用的数据源。无法在本地预览中使用。有关详细信息,请参阅使用 DataSources 和 DataSets 集合引用(Report Builder 3.0 和 SSRS)。 |
Variables |
Variables |
=Variables!CustomTimeStamp.Value |
表示报表变量和组变量的集合。有关详细信息,请参阅使用报表和组变量集合引用(Report Builder 3.0 和 SSRS)。 |
ReportItems |
不显示 |
=ReportItems("Textbox1").Value |
表示报表项中的文本框集合。此集合可以用于汇总页面中的项,包括页眉或页脚。有关详细信息,请参阅使用 ReportItems 集合引用(Report Builder 3.0 和 SSRS)。 |
在表达式中使用集合语法
若要从表达式中引用某个集合,可将标准的 Microsoft Visual Basic 语法用于集合中的项。下表显示集合语法的示例。
语法 |
示例 |
---|---|
Collection!ObjectName.Property |
=Fields!Sales.Value |
Collection!ObjectName("Property") |
=Fields!Sales("Value") |
Collection("ObjectName").Property |
=Fields("Sales").Value |
Collection("Member") |
=User("Language") |
Collection.Member |
=User.Language |
将内置集合传递到自定义程序集中
如果要将内置集合传递到自定义程序集进行处理,则必须将代码项目中的程序集引用添加到定义内置集合的程序集中并且访问正确的命名空间。根据您是为运行在报表服务器上的报表(服务器报表)开发自定义程序集,还是为在 .NET 应用程序中本地运行的报表(本地报表)开发自定义程序集,需要引用的程序集会有所不同。有关详细信息,请参阅下面的内容。
命名空间: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel
程序集(本地报表): Microsoft.ReportingServices.ProcessingObjectModel.dll
程序集(服务器报表): Microsoft.ReportViewer.ProcessingObjectModel.dll
因为 Fields 和 ReportItems 集合的内容可在运行时动态更改,所以不应阻止它们对自定义程序集的调用(例如,在成员变量中)。同样的建议通常应用于所有内置集合。