这似乎应该很简单,但我还没有找到任何东西.在Reporting Services中,我有一个最多包含6行的表,这些表都具有计算值和动态可见性.我想总结这些行.基本上我有一些发票项目,想要总计.我无法更改数据库端的任何内容,因为我的存储过程在系统的其他地方使用.每行也从不同的数据集中提取数据,因此我无法对数据集求和.我可以用表格页脚汇总所有行吗?与在Excel中累计多行相似?将我的可见性表达式从每行放入我的页脚行以计算总和似乎非常多余.
有几种方法可以达到这个目的:
1.在SQL中进行计算并对该字段求和,如下所示:
SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable
然后只需使用Detail行中的TotalAmount字段,并在页脚中对其求和.
2.创建第二个数据集,为您计算总数并在页脚中使用该数据集而不是总和:
=Sum(Fields!TotalAmount.Value, "MyTotalingDataset")
3.使用自定义代码执行此操作.右键单击"布局"空间,选择"属性",然后单击"代码"选项卡.输入以下代码:
Public Dim TotalAmount As Double = 0 Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double TotalAmount = TotalAmount + (ThisValue * ThatValue) Return ThisValue * ThatValue End Function
在Detail band上,将字段汇总的列设为具有以下表达式:
=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)
这将执行上面的代码并进行计算并计算过程中的总和.
页脚区域显示总和,因此列具有以下表达式:
=Code.TotalAmount
而且你已经完成了.请注意,因为您无法保证代码执行的顺序,并且对于某些报告,它将首先执行页脚(例如,如果您使用详细信息区域中的行的总和),这将使总计为零因为细节带计算尚未发生,但对于一般情况,这应该有效.