2016-08-03 11 views
0

SSRSのアカウントグループとアカウントコードのデータセットに基づく一連のテーブルがあります。SSRSカスタム合計

私はいくつかのカスタムコードを使用して、2つの他のデータセットの合計値を並べて比較しています。私は、個々のアカウントとアカウントグループの両方に対して正しい値を返していますが、各テーブルの総計を正しく取得することはできません。各テーブルはフィルタリングされて特定の勘定グループのみを表示するので、データセットの合計は各テーブルの合計ではありません。私はこれがシンプルだと確信していますが、それは私を逃れています。私が使用している

カスタムコードがある: - :私はそれを少し微調整しなければならなかったが、それは仕事行わ

EDIT最初のTablixの小計が、現在この問題を得ました。基本的に、小計のために別々のSumLookup関数を作成し、それに合計を戻さなければなりませんでした。しかし、私はレポートの各タブリックスの変数を "リセット"する必要があります。現時点では、現在のタブリックスのものだけではなく、すべての小計を集計しています。私はこのような行を追加すると効果があったが、考えていないと思っただろうか?機能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関数を作成し、それに合計を戻さなければなりませんでした。しかし、私はレポートの各タブリックスの変数を "リセット"する必要があります。現時点では、現在のタブリックスのものだけではなく、すべての小計を集計しています。私はこのような行を追加すると効果があったが、考えていないと思っただろうか? 機能GetTotal() リターンgrandTotal grandTotal = 0 エンド機能 – Clouse24

+0

私は、回避策を考え出した - 今、最終的なコードを掲示します。ありがとう! – Clouse24