我有一个复杂的表达式,可以根据帐单类型计算收入。它基本上说如果Bill类型= Progress使用X计算,如果Bill类型= NTE使用Y计算,对于其他所有内容使用Z。因为这是一个聚合,您不能仅通过使用SSRS中的求和函数来求和。您需要使用自定义代码。我一直在使用我在Stack上找到的以下内容。见下文。
Public Shared Dim grandTotal as Decimal
Public Shared Dim costCenterTotal as Decimal
Public Shared Dim workerTotal as Decimal
Public Shared Function Initialize()
grandTotal = 0
costCenterTotal = 0
workerTotal = 0
End Function
Public Function AddTotal(ByVal b AS Decimal) AS Decimal
grandTotal = grandTotal + b
costCenterTotal = costCenterTotal + b
workerTotal = workerTotal + b
return b
End Function
Public Function GetWorkerTotal()
Dim ret as Decimal = workerTotal
workerTotal = 0
return ret
End Function
Public Function GetCostCenterTotal()
Dim ret as Decimal = costCenterTotal
costCenterTotal = 0
return ret
End Function
Public Function GetGrandTotal()
Dim ret as Decimal = grandTotal
grandTotal= 0
return ret
End Function
在主表达式中,我向该表达式添加了code.AddTotal()函数,并且在总行中,该列中使用了code.GetGrandTotal()函数。
问题是,当我运行报表时,在总计行中没有得到正确的总计。似乎会改变,这取决于我是否查看报告的每一页,甚至查看所有页面的总计也不正确。似乎重置了。有人可以告诉我我在做什么错。 谢谢。