65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Reporting Services 技巧:页脚文本问题

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.33/5 (3投票s)

2008年1月11日

CPOL

2分钟阅读

viewsIcon

26690

关于 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)

(这是包含页脚文本的 文本框。)

关注点

这段代码最重要的方面是,我们能够为报表设置页码,这将在我们处理报表页脚的很多情况下提供帮助。

http://www.sakasolutions.com

历史

  • 2008 年 1 月 11 日:最初的文章
© . All rights reserved.