我有一系列基于SSRS中的帐户组和帐户代码数据集的表格。
我正在使用一些自定义代码来返回来自其他两个数据集的求和值,以便并排比较。我正在为个人帐户和帐户组返回正确的值,但无法正确获得每个表的总计。每个表都经过筛选,仅显示特定的帐户组,因此数据集的总数不是每个表的总和。我确信这很简单,但它让我望而却步。
我正在使用的自定义代码是:
编辑 - 得到第一个tablix的小计,但现在这个问题:
我不得不稍微调整一下但是让它工作了。基本上必须为小计创建一个单独的SumLookup函数,并将我的总数返回到该小计。但是,我需要为报表中的每个Tablix“重置”变量。目前,它只是汇总每个小计而不仅仅是当前Tablix中的小计。我原本以为添加这样的线会起作用但不是,想法?函数GetTotal()返回grandTotal grandTotal = 0结束函数
已解决的代码
Dim grandTotal as New Decimal()
Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
ct = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
ct += 1
Next
If (ct = 0) Then return 0 else return suma
End Function
Function SumLookups(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim sumas As Decimal = New Decimal()
Dim cts as Integer = New Integer()
sumas = 0
cts = 0
For Each item As Object In items
sumas += Convert.ToDecimal(item)
cts += 1
Next
grandTotal = grandTotal + sumas
If (cts = 0) Then return 0 else return sumas
End Function
Function GetTotal()
return grandTotal
End Function
Function GetTotalReset()
grandTotal = nothing
End Function
答案 0 :(得分:1)
您无法获得总数,因为suma
函数的每次调用都会重置SumLookup()
变量。我不知道你是否正在对表格的每一行(即使是那些被过滤掉的那些行)中的函数进行调用,这会导致错误的总计。因此,如果不是这种情况,您可以创建一个超出SumLookup
函数范围的变量,然后从另一个自定义函数返回该变量。
Dim grandTotal As Integer;
Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
ct = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
ct += 1
Next
grandTotal = grandTotal + suma
If (ct = 0) Then return 0 else return suma
End Function
Function GetTotal()
return grandTotal
End Function
另一种选择是过滤数据集中的数据,只需要数据来计算正确的总数。
如果有帮助,请告诉我。