分页报表中的内置 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 变量的报表无法显示特定于查看报表的当前用户的报表数据。