分页报表中的内置 Globals 和 User 引用(报表生成器)
适用于: Microsoft Report Builder (SSRS) Power BI Report Builder SQL Server Data Tools 中的 Report Designer
内置字段集合包含“Globals”和“User”集合,表示处理分页报表时由 Reporting Services 提供的全局值 。 Globals 集合提供一些值,例如报表名称、开始处理报表的时间,以及报表表头或表尾的当前页码。 User 集合提供用户标识符和语言设置。 这些值在表达式中用于对报表中的结果进行筛选。
注意
在 SQL Server Data Tools 中,你可以在 Microsoft 报表生成器、Power BI 报表生成器和报表设计器中创建和修改分页报表定义 (.rdl) 文件。
使用全局集合
Globals 集合包含报表的全局变量。 在设计图面上,这些变量显示为带有前缀 &(& 号),例如 [&ReportName]
。 下表对 Globals 集合的成员进行了说明。
成员 | 类型 | 说明 |
---|---|---|
ExecutionTime | DateTime | 报表开始运行的日期和时间。 |
PageNumber | 整数 | 相对于重置页码的分页符的当前页码。 在报表处理开始时,初始值设置为 1 。 对于每个呈现的页,该页码将增 1。要为矩形、数据区域、数据区域组或地图在分页符内对页面进行编号,请在 PageBreak 属性上,将 ResetPageNumber 属性设置为 True。 不支持 Tablix 列层次结构组。 PageNumber 只能用于页眉或页脚中的表达式中。 |
ReportFolder | 字符串 | 包含该报表的文件夹的完整路径。 该项不包括报表服务器 URL。 |
ReportName | 字符串 | 报表存储在报表服务器数据库中的名称。 |
ReportServerUrl | 字符串 | 运行该报表的报表服务器的 URL。 |
TotalPages | 整数 | 相对于重置 PageNumber 的分页符的总页数。 如果未设置分页符,则该值与 OverallTotalPages 相同。 TotalPages 只能用于页眉或页脚中的表达式中。 |
PageName | 字符串 | 页的名称。 开始处理报表时,从 InitialPageName(这是一个报表属性)设置初始值。 处理每个报表项时,该值将被来自矩形、数据区域、数据区域组或地图的 PageName 的相应值替换。 不支持 Tablix 列层次结构组。 PageName 只能用于页眉或页脚中的表达式中。 |
OverallPageNumber | 整数 | 针对整个报表的当前页的页码。 此值不受 ResetPageNumber 影响。 OverallPageNumber 只能用于页眉或页脚中的表达式中。 |
OverallTotalPages | 整数 | 整个报表的总页数。 此值不受 ResetPageNumber 影响。 OverallTotalPages 只能用于页眉或页脚中的表达式中。 |
RenderFormat | RenderFormat | 与当前呈现请求有关的信息。 有关详细信息,请参阅下一节中的“RenderFormat”。 |
Globals 集合的成员将返回一个变量。 如果要在表达式中使用此集合中要求特定数据类型的成员,则必须先转换该变量。 例如,若要将执行时间变量转换为 Date 格式,请使用 =CDate(Globals!ExecutionTime)
。 有关详细信息,请参阅“表达式中的数据类型(报表生成器)”。
RenderFormat
下表介绍 RenderFormat的成员。
成员 | 类型 | 说明 |
---|---|---|
名称 | 字符串 | 呈现器的名称注册在 RSReportServer 配置文件中。在报表处理/呈现周期的特定环节可用。 |
IsInteractive | 布尔值 | 指示当前呈现请求是否使用交互式呈现格式。 |
DeviceInfo | 只读名称/值集合 | 当前呈现请求的 deviceinfo 参数的键/值对。 可以通过使用集合中的键或索引指定字符串值。 |
示例
下面的示例演示如何在表达式中使用对 Globals 集合的引用:
此表达式放置在报表表尾的文本框中,提供了报表的页码和总页数:
=Globals.PageNumber & " of " & Globals.TotalPages
此表达式提供了报表的名称和运行时间。 时间格式用 Microsoft .NET Framework 格式字符串设置为短日期:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
此表达式位于所选列的“列可见性”对话框中,仅当将报表导出到 Excel 后才会显示该列。 否则,此列将会隐藏。
EXCELOPENXML
引用 Office 2007 中包含的 Excel 的格式。EXCEL
引用 Office 2003 中包含的 Excel 的格式。=IIF(Globals!RenderFormat.Name = "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL", false, true)
使用用户集合
User 集合包含运行报表的用户的相关数据。 可使用此集合筛选报表中显示的数据。 例如,可只显示当前用户的数据,也可以像在报表标题中一样显示 UserID。 在设计图面上,这些变量显示为带有前缀 &(& 号),例如 [&UserID]
。
下表对 User 集合的成员进行了说明。
成员 | 类型 | 说明 |
---|---|---|
语言 | 字符串 | 运行报表的用户的语言。 例如,en-US 。 |
UserID | 字符串 | 运行报表的用户的 ID。 如使用的是 Windows 身份验证,则此值为当前用户的域帐户。 此值由报表生成器安全扩展插件确定,可使用 Windows 身份验证或自定义身份验证。 |
使用区域设置
可以使用表达式通过 User.Language 值来引用客户端计算机上的区域设置,从而确定如何向用户显示报表。 例如,可创建基于区域值而使用不同查询表达式的报表。 查询可以根据返回的语言发生相应更改,从不同的列中检索本地化信息。 您还可以根据此变量在报表或报表项的语言设置中使用表达式。
注意
在更改报表的语言设置时,必须注意由此引发的显示问题。 例如,更改报表的区域设置可以更改报表的日期格式,也可以更改货币格式。 除非已对货币进行转换,否则上述更改可能导致在报表中显示错误的货币符号。 若要避免这种情况,可设置要更改的各个项的语言信息,或将包含货币数据的项设置为特定语言。
标识快照或历史记录报表的 UserID
在某些情况下,包含 User!UserID 变量的报表无法显示特定于查看报表的当前用户的报表数据。