内置的全局和用户引用(报表生成器和 SSRS)
内置字段集合包含 Globals 和 User 集合,表示处理报表时由 Reporting Services 提供的全局值。 Globals 集合提供一些值,例如报表名称、开始处理报表的时间,以及报表表头或表尾的当前页码。 User 集合提供用户标识符和语言设置。 这些值在表达式中用于对报表中的结果进行筛选。
注意 |
---|
在 SQL Server Data Tools 中,您可以在报表生成器和报表设计器中创建和修改报表定义 (.rdl)。每个创作环境提供了不同的方式来创建、打开和保存报表和相关项。有关详细信息,请参阅 Web 上 microsoft.com 中的“在报表设计器和报表生成器中设计报表 (SSRS)”。 |
使用 Globals 集合
Globals 集合包含报表的全局变量。 在设计图面上,这些变量显示为带有前缀 &(“与”符号),例如 [&ReportName]。 下表对 Globals 集合的成员进行了说明。
成员 |
类型 |
说明 |
---|---|---|
ExecutionTime |
DateTime |
报表开始运行的日期和时间。 |
PageNumber |
Integer |
相对于重置页码的分页符的当前页码。 在报表处理开始时,初始值设置为 1。 对于每个呈现的页,该页码将增 1。 若要为矩形、数据区域、数据区域组或地图在分页符内对页面进行编号,请在 PageBreak 属性上,将 ResetPageNumber 属性设置为 True。 不支持 Tablix 列层次结构组。 PageNumber 只能用于页眉或页脚中的表达式中。 |
ReportFolder |
String |
包含该报表的文件夹的完整路径。 它不包括报表服务器 URL。 |
ReportName |
String |
报表存储在报表服务器数据库中的名称。 |
ReportServerUrl |
String |
正在运行该报表的报表服务器的 URL。 |
TotalPages |
Integer |
相对于重置 PageNumber 的分页符的总页数。 如果未设置分页符,则该值与 OverallTotalPages 相同。 TotalPages 只能用于页眉或页脚中的表达式中。 |
PageName |
String |
页的名称。 在报表处理开始时,从 InitialPageName(这是一个报表属性)设置初始值。 在处理每个报表项时,该值被来自矩形、数据区域、数据区域组或地图的 PageName 的相应值替换。 不支持 Tablix 列层次结构组。 PageName 只能用于页眉或页脚中的表达式中。 |
OverallPageNumber |
Integer |
针对整个报表的当前页的页码。 此值不受 ResetPageNumber 的影响。 OverallPageNumber 只能用于页眉或页脚中的表达式中。 |
OverallTotalPages |
Integer |
整个报表的总页数。 此值不受 ResetPageNumber 的影响。 OverallTotalPages 只能用于页眉或页脚中的表达式中。 |
RenderFormat |
RenderFormat |
与当前呈现请求有关的信息。 有关详细信息,请参阅下一节中的“RenderFormat”。 |
Globals 集合的成员将返回一个变量。 如果要在表达式中使用此集合中要求特定数据类型的成员,则必须先转换该变量。 例如,若要将执行时间变量转换为 Date 格式,请使用 =CDate(Globals!ExecutionTime)。 有关详细信息,请参阅表达式中的数据类型(报表生成器和 SSRS)。
RenderFormat
下表介绍 RenderFormat 的成员。
成员 |
类型 |
说明 |
---|---|---|
名称 |
String |
呈现器的名称注册在 RSReportServer 配置文件中。 在报表处理/呈现周期的特定环节可用。 |
IsInteractive |
Boolean |
当前呈现请求是否使用交互式呈现格式。 |
DeviceInfo |
只读名称/值集合 |
当前呈现请求的 deviceinfo 参数的键/值对。 可以通过使用集合中的键或索引指定字符串值。 |
示例
下面的示例演示如何在表达式中使用对 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 身份验证,也可以使用自定义身份验证。 |
有关在报表中支持多种语言的详细信息,请参阅 SQL Server 联机丛书中的 Reporting Services 文档中的“多语言或全局部署的解决方案设计注意事项”。
使用区域设置
可以使用表达式通过 User.Language 值来引用客户端计算机上的区域设置,从而确定如何向用户显示报表。 例如,可创建基于区域值而使用不同查询表达式的报表。 查询可以根据返回的语言发生相应更改,从不同的列中检索本地化信息。 您还可以根据此变量在报表或报表项的语言设置中使用表达式。
注意 |
---|
在更改报表的语言设置时,必须注意由此引发的显示问题。 例如,更改报表的区域设置可以更改报表的日期格式,也可以更改货币格式。 除非已对货币进行转换,否则上述更改可能导致在报表中显示错误的货币符号。 若要避免这种情况,可设置要更改的各个项的语言信息,或将包含货币数据的项设置为特定语言。 |
标识快照或历史记录报表的 UserID
在某些情况下,包含 User!UserID 变量的报表将无法显示特定于查看报表的当前用户的报表数据。