質問

これは単純なはずですが、まだ何も見つかりません。 Reporting Servicesには、最大6行のテーブルがあり、すべてに計算値と動的な可視性があります。これらの行を合計したいと思います。基本的に、私はいくつかの請求書アイテムを持っており、合計を作りたいです。ストアドプロシージャはシステムの他の場所で使用されるため、DB側では何も変更できません。各行は異なるデータセットからもデータを取得するため、データセットの合計を計算することはできません。すべての行を表フッターで合計できますか? Excelで行の数を合計するのと同様に?各行の可視性の表現をフッター行に入れて合計を計算するのは非常に冗長なようです。

役に立ちましたか?

解決

これを達成できるいくつかの方法:

1。次のように、SQLで計算を行い、そのフィールドを合計します。

SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable

[Detail]行の[TotalAmount]フィールドを使用して、フッターで合計します。

2。合計を計算する2番目のデータセットを作成し、合計ではなくフッターで使用します:

=Sum(Fields!TotalAmount.Value, "MyTotalingDataset")

3。カスタムコードを使用して実行します。レイアウトスペースを右クリックして[プロパティ]を選択し、[コード]タブをクリックします。次のコードを入力します。

Public Dim TotalAmount As Double = 0

Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double
    TotalAmount = TotalAmount + (ThisValue * ThatValue)
    Return ThisValue * ThatValue
End Function

詳細バンドで、フィールドを合計する列に次の式を設定します。

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)

これにより、上記のコードが実行され、計算が行われ、プロセスの合計が計算されます。

フッターバンドには合計が表示されるため、列には次の式が含まれます。

=Code.TotalAmount

これで完了です。コードの実行順序が保証されていないため注意してください。一部のレポートでは、フッターが最初に実行され(たとえば、詳細バンドの行の合計を使用する場合)、合計がゼロになります。詳細バンドの計算はまだ行われていませんが、一般的な場合はこれで機能するはずです。

他のヒント

次のようにデータベースを変更できます。

データを集計せずに SQLで集計結果を取得できることをご存知ですか?

次のように、データセットに列を追加します。  、SUM(OrderQty)OVER(PARTITION BY SalesOrderID)AS 'Total'

上記のサンプル: OrderQtyは、合計する値です SalerOrderIDは「GROUP BY」と同等です

COUNT、AVGなどで同じ手法を使用できます

詳細はこちら http://msdn.microsoft.com/en-us /library/ms189461(SQL.90).aspx

実行順序に問題がある場合は、テーブルの下にテキストボックスを追加し、このボックスにTotalAmountを表示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top