2016-11-03 70 views
0

我正在使用自定義代碼來計算子彙總。小計總計正在下降。使用自定義代碼問題計算子彙總的Reporting Services

如果我運行1個週期的報告,下面的自定義代碼工作得很好。

自定義代碼

Public Shared Dim SortCodeTotal as Decimal 

Public Shared Function Initialize() 
    SortCodeTotal = 0 
End Function 

Public Function AddTotal(ByVal b as Decimal) as Decimal 
    SortCodeTotal = SortCodeTotal + b 
    return b 
End Function 

Public Function DisplayTotal(ByVal b as Decimal) as Decimal 
    Dim ret as Decimal = 0 
    ret = SortCodeTotal + b 
    SortCodeTotal = ret 
    return ret 
End Function 

明細行含有這種表達

=Code.AddTotal(Sum(Fields!Activity_Amt.Value)) 

摘要總包含此表達

=Code.DisplayTotal(0) 

該報告使用矩陣。自定義代碼在超過1個週期運行時不正確。如何更改自定義代碼以在矩陣中的所有時段工作。

小計總共工作。

Detail 1  $50 
Detail 1  $50 
Sub Total **$100** 

Detail 2  $40 
Detail 2  $40 
Sub Total **$180** 

Detail 3  -$50 
Detail 3  $50 
Sub Total **$180** 

Detail 4 $20 
Detail 4 $50 
Sub Total **$250** 

的總額是發生在一子總 +的下一個明細行

Click this to see how the report looks

Click this to review the report

+0

你可以添加你的矩陣確定小區的截圖,從你正在調用自定義代碼。預期的結果也可能有用。 –

+0

你可以在ssrs報告中使用RunningValue()函數。 – Kostya

+0

runningValue()似乎不起作用。我可能會錯誤地使用它。 –

回答

0

看來你的問題是相關的就這樣SSRS處理矩陣。在傳遞給下一個之前,每個整行都進行評估,因此您的累計總數是水平計算的,而每個列需要垂直運行總數。

下面的自定義函數使用Collection來存儲每行的每個句點的總和。

Public Shared dict As New Collection 

Public Function AddTotal(ByVal value as Double, ByVal period As String) As Object 

    Dim subtotal As Double 

    If not dict.Contains(period) Then 
     dict.Add(value, period) 
     subtotal = dict.Item(period) 
     Return subtotal 
    End If 
    subtotal = dict.Item(period) + value 
    dict.Remove(period) 
    dict.Add(subtotal,period) 
    Return dict.Item(period) 

End Function 

調用這個函數的使用:

=Code.AddTotal(sum(Fields!Activity_Amount.Value),Cstr(Fields!Period.Value)) 

我覺得沒有必要額外的功能,因爲這在每個評估,只要你在正確的範圍內使用它返回的累計,在期間組內,在細節組外部和Sort Code組內。

enter image description here

它產生:

enter image description here

在我的數據集Period字段值1和2

+0

真棒!!!!!!!謝謝alejandro ...這很棒!!!!你已經度過了我的一天。感謝您的所有時間。我是一個快樂的人。 –

+0

@RobertThompson,不客氣。如果我的回答對您有幫助,您可以將其標記爲正確答案。 [如何選擇一個正確的答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+0

嘿alejandro,我有第一個總結的問題。第一個總結總之一切正常。 –

相關問題