在表达式中使用内置字段引用 (Reporting Services)

内置字段集合包含 Globals 和 User 集合,表示处理报表时由 Reporting Services 提供的全局值。Globals 集合提供一些值,例如报表名称、开始处理报表的时间,以及报表表头或表尾的当前页码。User 集合提供用户标识符和语言设置。这些值在表达式中用于对报表中的结果进行筛选。

使用 Globals 集合

Globals 集合包含报表的全局变量。在设计图面上,这些变量显示为带有前缀 &(“与”符号),例如 [&ReportName]。下表对 Globals 集合的成员进行了说明。

成员

类型

说明

ExecutionTime

DateTime

报表开始运行的日期和时间。

PageNumber

Integer

当前页码,只能用在页眉和页脚中。

ReportFolder

String

包含该报表的文件夹的完整路径。它不包括报表服务器 URL。

ReportName

String

报表存储在报表服务器数据库中的名称。

ReportServerUrl

String

正在运行该报表的报表服务器的 URL。

TotalPages

Integer

报表中的总页数,只能用在页眉和页脚中。

Globals 集合的成员将返回一个变量。如果要在表达式中使用此集合中要求特定数据类型的成员,则必须先转换该变量。例如,若要将执行时间变量转换为 Date 格式,请使用 =CDate(Globals!ExecutionTime)。有关详细信息,请参阅在表达式中使用数据类型 (Reporting Services)

示例

下面的示例演示如何在表达式中使用对 Globals 集合的引用:

  • 此表达式放置在报表表尾的文本框中,提供了报表的页码和总页数:

    =Globals.PageNumber & " of " & Globals.TotalPages

  • 此表达式提供了报表的名称和运行时间。其时间格式为短日期形式的 Microsoft.NET Framework 格式设置字符串:

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

使用 User 集合

User 集合包含运行报表的用户的相关数据。可以使用此集合筛选报表中显示的数据,例如,仅显示当前用户的数据或显示 UserID(如在报表标题中)。在设计图面上,这些变量显示为带有前缀 &(“与”符号),例如 [&UserID]。

下表对 User 集合的成员进行了说明。

成员

类型

说明

Language

String

运行报表的用户的语言。例如,en-US。

UserID

String

运行报表的用户的 ID。如果您使用的是 Windows 身份验证,则此值为当前用户的域帐户。此值由 Reporting Services 安全扩展插件确定,此插件可以使用 Windows 身份验证,也可以使用自定义身份验证。

有关报表中支持的多种语言的详细信息,请参阅多语言或全局部署的解决方案设计注意事项 (Reporting Services)

使用区域设置

可以使用表达式通过 User.Language 值来引用客户端计算机上的区域设置,从而确定如何向用户显示报表。例如,可创建基于区域值而使用不同查询表达式的报表。查询可以根据返回的语言发生相应更改,从不同的列中检索本地化信息。您还可以根据此变量在报表或报表项的语言设置中使用表达式。

注意注意

在更改报表的语言设置时,必须注意由此引发的显示问题。例如,更改报表的区域设置可以更改报表的日期格式,也可以更改货币格式。除非已对货币进行转换,否则上述更改可能导致在报表中显示错误的货币符号。若要避免这种情况,可设置要更改的各个项的语言信息,或将包含货币数据的项设置为特定语言。

标识快照或历史记录报表的 UserID

在某些情况下,包含 User!UserID 变量的报表将无法显示特定于查看报表的当前用户的报表数据。有关详细信息,请参阅报表故障排除:以特定文件格式导出的报表