Frage

Dies scheint, wie es sollte einfach sein, aber ich kann noch nichts finden. In Reporting Service habe ich eine Tabelle mit bis zu 6 Zeilen, die alle haben Werte und dynamische Sicht berechnet. Ich möchte diese Zeilen summieren. Im Prinzip habe ich eine Reihe von Rechnungspositionen und will insgesamt machen. Ich kann nichts auf der DB Seite ändern, da meine gespeicherten Prozeduren an anderer Stelle im System verwendet werden. Jede Zeile zieht Daten von einem anderen Datensatz als gut, so kann ich eine Summe des Datensatzes nicht. Kann ich alle Zeilen mit einem Tabellenfuß zusammenzufassen? Ähnlich wie eine Anzahl von Zeilen in Excel in Höhe von? Es scheint sehr redundant meine Sichtbarkeit Ausdruck aus jeder Zeile in meine Fußzeilenzeile setzt die Summe zu berechnen.

War es hilfreich?

Lösung

Ein paar Möglichkeiten, wie Sie dies erreichen können:

1 die Berechnung in der SQL tun, und das Feld Summe, etwa so:.

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

Dann benutzen Sie einfach das TotalAmount Feld in der Detailzeile und summiert es in der Fußzeile.

2 eine zweite Datensatz erstellen, der die Summe für Sie berechnet und verwendet, die in der Fußzeile statt einer Summe:.

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

3. Sie verwenden es benutzerdefinierten Code. Rechtsklick auf den Layout-Raum Eigenschaften auswählen und auf der Registerkarte Code klicken. Setzen Sie in dem folgenden Code:

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

Auf der Detailband, machen Sie die Spalte, wo Sie das Feld Summe haben diesen Ausdruck:

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

Dies wird den Code oben und tun Sie Ihre Berechnung ausführen und die Gesamtsumme in dem Verfahren berechnen.

Das Footer Band zeigt die Gesamtsumme so die Spalte den Ausdruck hat:

=Code.TotalAmount

Und du bist fertig. Nur vorsichtig sein, weil Sie nicht die Reihenfolge garantiert werden, in dem Ihr Code ausgeführt werden und für einige Berichte wird es die Fußzeile erstes (zum Beispiel, wenn Sie die Summe der Zeilen in der Detailband verwenden) ausführen, welche die Gesamt Null machen würde wie die Detailband Berechnungen noch nicht passiert, aber für den allgemeinen Fall sollte diese Arbeit.

Andere Tipps

Sie konnten die db wie folgt ändern.

Haben Sie wissen, dass Sie aggregierte Ergebnisse in SQL erhalten kann, ohne , um die Daten aggregiert?

Nur eine zusätzliche Spalte zu dem Datensatz hinzufügen, wie folgt:  , SUM (OrderQty) OVER (PARTITION BY SalesOrderID) AS 'Total'

In dem obigen Beispiel: OrderQty ist der Wert, den Sie möchten, summieren SalerOrderID ist das Äquivalent von 'GROUP BY'

Sie können die gleiche Technik mit COUNT, AVG verwenden und so weiter

Weitere Informationen finden Sie hier http://msdn.microsoft.com/en-us /library/ms189461(SQL.90).aspx

Falls Sie ein Problem mit der Ausführungsreihenfolge, ein Textfeld unterhalb der Tabelle hinzuzufügen und anzuzeigen TotalAmount in dieser Box.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top