SQL Reporting Services 技巧:页脚文本问题
关于 ReportDesigner 页脚文本遇到问题的一个技巧。
引言
SQL 报告服务的一个问题是处理页脚,即按您想要的方式。报表设计器的页脚有一些限制。因此,为了让页脚按照您想要的方式显示,需要一些调整代码。在这里,我们将讨论这样一个问题及其解决方案。
背景
我们大多数人遵循的一个常见方法是将页脚的 RepeatOnNewPage
属性设置为 false
。这只会将页脚显示在第一页,而不是所有第一页。为了清楚起见,让我们考虑一个例子,我的存储过程返回 10 条记录,并且我设计的报表使每条记录跨越最多 2 页。当我们将页脚的此 RepeatOnNewPage
属性设置为 false
时,它只在第一条记录的第一页显示页脚,而不是所有 10 条记录的第一页。我希望这能让你清楚地了解这个问题。
Using the Code
因此,迫切需要针对这个问题找到一个解决方案。我们遇到了类似的问题,并以以下方式找到了解决方案。我们在网上找到的一篇文章足以让我们摆脱这个问题。
该文章的链接是 http://blogs.msdn.com/ChrisHays/。
在那篇文章中,作者遵循了报表服务的分组概念,以分隔来自数据库的记录,如果不这样做,最终将显示所有记录为一个单一的报表。同样的理念,通过调整代码,可以解决我们的问题。解决此问题的步骤如下
步骤 1
我们需要在报表中取一个文本框,其中包含分组表达式,即我们用来分隔来自数据库的记录的字段。(例如,如果根据数据库中的一个字段进行分组,例如 PatientID
,那么 文本框
将包含 "=Fields!PatientID.Value" 作为表达式。将 文本框
命名为 Category
。)
第二步
将以下代码添加到报表的代码部分。此代码部分位于 报表--> 报表属性 --> 代码。
Shared offset as Integer
Shared currentgroup as Object
Public Function GetGroupPageNumber(group as Object,
pagenumber as Integer) as Object
If Not (group = currentgroup)
offset = pagenumber - 1
currentgroup = group
End If
Return pagenumber - offset
End Function
步骤 3
将以下内容用作页脚中文本框的可见性表达式
=Code.GetGroupPageNumber(ReportItems!Category.Value, Globals!PageNumber)
(这是包含页脚文本的 文本框
。)
关注点
这段代码最重要的方面是,我们能够为报表设置页码,这将在我们处理报表页脚的很多情况下提供帮助。
历史
- 2008 年 1 月 11 日:最初的文章