Aggregatfunktionen

Navigation:  Bericht im FR-Designer > Sortierung, Ergebnisse >

Aggregatfunktionen

Previous pageReturn to chapter overviewNext page

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:

 

clip0177

 

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:

 

_img134

 

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:

 

_img135

 

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:

 

_img136