2016-11-03 23 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を使用して、各行の各期間の合計を格納します。これは、限り、あなたは正しいスコープでそれを使用すると、各評価に累計を返し以来、私は追加機能の必要がないと思います

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

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 

は、この機能の使用を呼び出すにはピリオドグループ内、詳細グループ外、およびSort Codeグループ内に表示されます。

enter image description here

それは生産:あなたが呼び出しているから、私のデータセットPeriodフィールドで

enter image description here

あなたはセルを特定するあなたのマトリックスのスクリーンショットを追加することができます値は1と2

+0

恐ろしい!!!!!!!ありがとうアレハンドロ...これは素晴らしい作品!!!!あなたは私の一日を作った。あなたのお時間をありがとう。私は幸せな人です。 –

+0

@RobertThompson、よろしくお願いします。私の答えがあなたを助けたら、あなたはそれを正しい答えとしてマークすることができます。 [正しい答えを選択する方法](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+0

こんにちはアレハンドロ、私は最初の要約の合計に問題があります。最初の要約の後、すべてがすべて機能しています。 –

関連する問題