SSRS自定义总计

时间:2016-08-03 20:06:56

标签: sql reporting-services ssrs-2012

我有一系列基于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

1 个答案:

答案 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 

另一种选择是过滤数据集中的数据,只需要数据来计算正确的总数。

如果有帮助,请告诉我。