In den meisten Fällen will man bei Gruppenreporten am Ende irgendeine zusammenfassende Information sehen z.B. die Summe, die Anzahl der Elemente usw. FastReport enthält für diesen Fall so genannte Aggregatfunktionen. Mit deren Hilfe kann man die Funktion zur Diagnose der Daten wählen. Die unten aufgeführte Liste enthält die enthaltenen Aggregatfunktionen:
Funktion
Beschreibung
SUM
Berechnet die Summe des Ausdrucks für die Datenmenge
MIN
Berechnet das Minimum des Ausdrucks für die Datenmenge
MAX
Berechnet das Maximum des Ausdrucks für die Datenmenge
AVG
Berechnet den Durchschnitt des Ausdrucks für die Datenmenge
COUNT
Zählt die Anzahl der Datensätze
Die Syntax aller Aggregatfunktionen (außer COUNT) sieht wie folgt aus (am Beispiel der Funktion SUM):
SUM(expression, band, flags)
SUM(expression, band)
SUM(expression)
Die Zuordnung der Parameter ist folgende:
expression Ausdruck, dessen Bedeutung bearbeitet werden muss
band der Name des Datenbandes, mit dem gearbeitet werden soll
flags ein Feld, welches folgende Bedeutungen haben kann und die Kombinationen dieser:
1 beachte unsichtbare Bänder
2 kumuliert den Wert
Wie man sieht, ist expression der einzige obligatorische Parameter, die restlichen sind optional. Es empfiehlt sich trotzdem das Parameter band zu nutzen um Fehler zu vermeiden.
Die Funktion COUNT hat folgende Syntax:
COUNT(band, flags)
COUNT(band)
Die Zuordnung der Parameter ist analog:
Es existiert eine Regel, die für alle Aggregatfunktionen Gültigkeit hat: die Funktion wird nur für das Datenband berechnet und wird nur in dem Fuß angezeigt (hierzu zählen: Fuß, Seitenfuß, Gruppenfuß, Spaltenfuß)
Wie funktionieren Aggregatfunktionen? Sehen wir uns ein Beispiel unseres Reports mit Gruppen an. Fügen wir neue Elemente ein:
Das Feld:" ItemsTotal" auf dem Datenband wird die Summe der Bestellung anzeigen. In den Gruppenfuß setzen wir das Objekt "Text" ein, dieses soll die Aggregatfunktion SUM enthalten. Es soll die Gesamtsumme aller Bestellungen des Kunden enthalten. Wenn wir den Report nun starten und mit einem Taschenrechner die Werte überprüfen, so werden wir sehen, das alles richtig funktioniert:
Also wie ist nun das Arbeitsprinzip der Aggregatfunktionen? Vor der Reporterstellung scannt FastReport den Inhalt der Objekte "Text" nach Aggregatfunktionen. Gefundene Funktionen werden den entsprechenden Datenbändern zugeordnet (hier im Beispiel wird die Funktion SUM mit dem Band MasterData1 verknüpft). Bei der Erstellung des Reports werden nun, sobald das Datenband auf dem Bildschirm erscheint, die Aggregatfunktionen ausgewertet. Hier wird Summe des Feldes Group."ItemsTotal" gebildet. Nachdem der Gruppenfuß, welcher die Summe anzeigt, ausgeführt worden ist, wird nun die Funktion für die nächste Gruppe neu gestartet usw.
Hier kann man die Bedeutung des Parameters flags in Aggregatfunktionen aufzeigen. In manchen Reporten ist ein Teil der Bänder (oder auch alle) verborgen. Wir wollen jedoch, dass bei der Auswertung der Funktion alle Datenbänder berücksichtigt werden. In unserem Beispiel können wir die Eigenschaft Visible bei dem Datenband deaktivieren. Dieser wird nun nicht auf dem Bildschirm angezeigt. Soll die Summe auch die Werte der verborgenen Bänder enthalten, so müssen wir einen dritten Parameter in den Aufruf der Funktion einsetzen.
[SUM(<Group."ItemsTotal">,MasterData1,1)]
Wir erhalten folgenden Report:
Bei dem Parameter flags = 2 wird der kumulierte Wert nicht zurückgesetzt. Es wird eine Gesamtsumme gebildet. Modifizieren wir den Aufruf der Funktion:
[SUM(<Group."ItemsTotal">,MasterData1,3)]
Die 3 ist eine Kombination von 1 und 2, d.h. es werden auch die verborgenen Bänder bearbeitet und es wird eine Gesamtsumme gebildet: Im Endeffekt: