如何在SSRS报表中汇总Report Item文本框的总值?
SSRS报表汇总Report Item文本框总值问题解决
问题背景
需要汇总SSRS报表中指定Report Item文本框的所有数值,得到总和。原报表是分散的单值文本框,期望在报表中显示这些数值的累加结果。
尝试过的方法(未生效)
自定义VB代码:
Public Shared Dim TotalSum As Decimal = 0 Public Function AddToTotal(ByVal value As Decimal) As Decimal TotalSum += value Return value End Function Public Function GetSum() As Decimal Return TotalSum End Function
调用表达式:
=Code.AddToTotal(ReportItems!Textbox1.Value) =Code.GetTotalSum()
实际运行后没有得到正确的汇总结果。
问题排查与解决方案
1. 函数调用名错误
自定义代码里的汇总函数是GetSum(),但调用时写的是GetTotalSum(),名称不匹配是直接导致失效的原因,先把调用改成=Code.GetSum()。
2. 数据类型转换问题
ReportItems!Textbox1.Value返回的是字符串类型,直接传入AddToTotal函数会引发类型错误,需要先转换为Decimal:
调用表达式改为:
=Code.AddToTotal(CDec(ReportItems!Textbox1.Value))
3. SSRS执行顺序限制
汇总文本框必须放在所有需要汇总的文本框之后(比如报表页脚、分组页脚区域),因为SSRS是从上到下执行表达式,提前放置的汇总框会在数值累加前就计算,导致结果为0或不完整。
4. 替代方案:使用报表变量(更稳定)
Shared变量在多分页、多实例场景下容易出现累加异常,推荐用报表内置变量替代:
- 右键报表空白处 → 打开「报表属性」→ 切换到「变量」标签 → 添加变量
TotalSum,类型选Decimal,默认值设为0 - 给每个需要汇总的文本框设置表达式:
同时新增一个隐藏文本框,放在对应数值文本框的同一区域,表达式写:=CDec(ReportItems!Textbox1.Value)=Variables!TotalSum.SetValue(Variables!TotalSum.Value + CDec(ReportItems!Textbox1.Value)) - 最终的汇总文本框表达式直接写:
=Variables!TotalSum.Value
内容的提问来源于stack exchange,提问作者Nemil
相关产品推荐
相关产品推荐

