SSRS分组问题:在页眉页脚显示数据集分组数据及汇总值
解决SSRS页眉/页脚显示当前组汇总数据的问题
我懂你现在的痛点——从Crystal报表转SSRS,已经把细节区的分组和组内汇总搞定了,但要在页眉页脚显示当前组的payment_amt汇总,直接用=Sum(Fields!payment_amt.Value, "DataSet1")得到的是整个数据集的总和,根本不是当前组的数值对吧?这是因为页眉页脚属于报表级作用域,默认不能直接引用组级的计算结果,得用点小技巧来传递组内的汇总值。
下面给你两个靠谱的解决方法:
方法一:使用组变量存储汇总值
这是最直接的方式,把组内的汇总值存在组变量里,然后在页眉页脚调用:
- 右键点击你设置的分组行(在“分组”面板或者设计器里的分组标识行),选择组属性
- 切换到变量标签页,点击“添加”按钮:
- 名称:比如叫
CurrentGroupPaymentTotal - 值:输入
=Sum(Fields!payment_amt.Value)(这里因为在组属性里,默认作用域就是当前组,所以不用额外指定组名)
- 名称:比如叫
- 点击确定保存后,在页眉或页脚的文本框里,用表达式
=Variables!CurrentGroupPaymentTotal.Value就能获取当前组的payment_amt汇总了。
方法二:通过隐藏文本框传递值
如果组跨了多页,这个方法也能稳定工作:
- 在组的页眉或者组页脚区域,添加一个新的文本框
- 设置文本框的表达式为
=Sum(Fields!payment_amt.Value, "你的组名称")(这里的“你的组名称”是你在分组时给组起的名字,在“分组”面板里可以看到,别写错) - 把这个文本框设为隐藏:右键文本框→文本框属性→可见性→选择“隐藏”
- 然后在页眉或页脚的文本框里,用表达式
=ReportItems!隐藏文本框的名称.Value来调用这个值(把“隐藏文本框的名称”换成你刚才设置的文本框名字)
为什么原来的表达式不行?
=Sum(Fields!payment_amt.Value, "DataSet1")的作用域是整个数据集,所以计算的是所有记录的payment_amt总和。而页眉页脚本身不属于任何分组的作用域,没法直接指定组作为Sum的作用域,所以必须通过变量或者隐藏文本框把组内的汇总值“传递”到报表级的页眉页脚里。
额外注意点
- 如果是嵌套分组,要确保变量/文本框对应的是你需要的那个层级的组
- 测试时要验证跨页的组:比如一个组占3页,页眉页脚的汇总值应该全程保持一致,直到组切换到下一个
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

