2016-08-03 72 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