2016-08-03 74 views
0

我有一系列基于SSRS中帐户组和帐户代码的数据集的表。SSRS自定义合计

我正在使用一些自定义代码来返回来自两个其他数据集的求和值并排比较。我为个人帐户和帐户组返回正确的值,但无法正确获得每个表的总计。每个表都被过滤以仅显示特定的帐户组,因此数据集的总数不是每个表的总数。我敢肯定这很简单,但它正在逃避我。我使用

自定义代码:

编辑 - 拿到小计第一表矩阵,但现在这个问题:

我不得不调整它一点,但使工作。基本上必须为小计创建一个单独的SumLookup函数,并将我的总数返回给它。但是,我需要在报告中“重置”每个tablix的变量。目前,它只是汇总每个小计,而不仅仅是当前tablix中的小计。我本来以为像这样添加一条线会起作用,但不是,想法?功能GetTotal()返回grandTotal grandTotal = 0端功能

解决CODE

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 

回答

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 

另一种替代方法是过滤数据集中的数据,只留下数据来计算正确的总数。

让我知道这是否有帮助。

+0

谢谢亚历杭德罗 - 我不得不调整它,但使它的工作。基本上必须为小计创建一个单独的SumLookup函数,并将我的总数返回给它。但是,我需要在报告中“重置”每个tablix的变量。目前,它只是汇总每个小计,而不仅仅是当前tablix中的小计。我本来以为像这样添加一条线会起作用,但不是,想法? Function GetTotal() return grandTotal grandTotal = 0 End Function – Clouse24

+0

我刚想出一个解决方法 - 现在发布最终的代码。谢谢! – Clouse24