在表达式中使用内置字段引用 (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 变量的报表将无法显示特定于查看报表的当前用户的报表数据。有关详细信息,请参阅报表故障排除:以特定文件格式导出的报表。