集团页面总计和结转总计

时间:2013-01-04 15:43:13

标签: ssrs-2008 reporting-services

我已经搜索了很多关于此的内容,但没有发现任何有用的内容。这是在here之前提出的,但没有人回复。

我有一个tablix,用于显示带有金额列的分组数据:

Tablix (data)
             Name (group)
                         Amount (rows)

如果“名称”组跨越多个页面,我想显示第一页上存在的金额总和的页面总数。在下一页上,必须显示上一页的结转总数。

我尝试了很多东西,尤其是我的自定义程序集(比如保存一个字典,其中包含每个组的总数,并在报告的页脚中尝试显示总数等)。真正混淆任何实现的是报告的标题,正文和页脚被“执行”的顺序。

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:1)

由于:

  • 无法确定分组数据的一个实例是否在详细级别上分成多个页面(以便可以在重复的列标题下方显示结转总数)这一事实
  • 页面页眉和页脚始终在body元素
  • 之后“评估”
  • 您只能在页眉和页脚
  • 中使用的表达式中引用ReportItem
  • 您无法从页眉或页脚更改正文元素(主要是因为上述要点)
  • 您无法扩展tablix控件以添加自己的功能

我决定在页脚中显示组页面总数,存储它并将其拾起以显示到下一页。

这是通过使用

累积总列来完成的
= IIf(RunningValue(Fields!AmountDC.Value, Sum, "Group1") <> Sum(Fields!Amount.Value, "Group1"), code.SetTotal(RunningValue(Fields!Amount.Value, Sum, "Group1")), Nothing) 

对于最后一个细节行,将其设置为“Nothing”

在页脚中,文本框会选取该累计总字段的最后一个值。

= code.SetTotal(Last(ReportItems!CumTotal.Value))

并将当前总数存储在嵌入代码中的私有字段中。

Private running As Double = 0

Public Function SetTotal(ByVal val As Double) As Double
    running = val
    Return val
End Function

Public Function GetTotal() As Double
    Return running
End Function

最后在页面页脚中拾取存储的总数

= code.GetTotal()

这太简单了,但是经过多次试验,它仍然是我能得到的最接近的东西!

答案 1 :(得分:0)

试试这篇文章...separating pages answers..

这不是一个直接的答案,但如果你发挥创意并使用sql分隔页面或使用一个运行总计,这可以让你开始。

然而,要回答你的问题,它不是ssrs中的一个功能。