Funktion "Aggregieren im Feldeditor"
Referenz zur Formel-Funktion "$Aggregate": Aufbau, Übergabewerte und Einsatzmöglichkeiten innerhalb von Regeln.
Lizenzstufe: XL
Mit der Funktion "$Aggregate" lassen sich Werte aggregieren - also eine Vielzahl von Einzelbeobachtungen zu einem einzigen Wert zusammenfassen, z. B. die Anzahl und Summe aller offenen Angebote einer Adresse. Im Unterschied zu den übrigen Anweisungsarten ist "$Aggregate" keine eigenständige Anweisungsart mit eigenem Dropdown-Eintrag, sondern eine Formel-Funktion, die innerhalb beliebiger Formelfelder einer Regel eingesetzt werden kann - z. B. im Vorgabewert einer Feldzuweisung oder in einer Bedingung.
ℹ️ Keine eigene Auswertungsposition Da es sich um eine allgemeine Formel-Funktion handelt, ist "$Aggregate" nicht auf eine bestimmte Auswertungsposition beschränkt, sondern grundsätzlich überall dort nutzbar, wo ein Formelfeld zur Verfügung steht - am Erfassungsformular, beim Buchen/Stornieren, beim Wandeln, in Übersichten, bei Zeit-/Mandant-Ereignissen und bei Eigenen Abläufen.
Wo konfiguriere ich das in der Software?
Beispiel: PARAMETER - ADRESSEN - REGELN - NEU - Auswertungsposition: Eigene Abläufe - Anweisungsart: Meldung / Abfrage - Dialogart: Hinweis - Layout: Feldeditor - Funktion "Aggregate" eingeben
Aufbau der Funktion
$Aggregate("TableName","FeldName","Funktion","IndexName",KeyFieldCount,"RangeStart","RangeEnd")
Optional lässt sich eine Filterbedingung ergänzen:
$Aggregate("TableName","FeldName","Funktion","IndexName",KeyFieldCount,"RangeStart","RangeEnd","[optionale Filterbedingung]")
Die Werte werden über Kommata getrennt. Anführungszeichen müssen nicht zwingend angegeben werden.
Übergabewerte
| Parameter | Bedeutung |
|---|---|
| TableName | Name der Tabelle, aus der die Werte aggregiert werden |
| FeldName | Name des Feldes, auf das die Funktion angewendet wird |
| Funktion | Eine der verfügbaren Aggregationsfunktionen (siehe unten) |
| IndexName | Name der Sortierung, über die der Datenbereich eingegrenzt wird |
| KeyFieldCount | Anzahl der Felder im Index, die für RangeStart / RangeEnd belegt werden |
| RangeStart | Feldwerte für den Bereichsanfang |
| RangeEnd | Feldwerte für das Bereichsende |
| Filterbedingung (optional) | Zusätzliche Filterbedingung auf echte Datenbankfelder mit festen Werten (keine berechneten Felder) |
Verfügbare Aggregationsfunktionen
| Funktion | Bezeichnung |
|---|---|
| Min | Minimalwert |
| Max | Maximalwert |
| Sum | Summe |
| Avg | Durchschnittswert |
| Cnt | Anzahl der Datensätze im Bereich |
⚠️ Einschränkungen bei der Feldauswahl - Felder, die erst zur Laufzeit berechnet werden (z. B. Gesamtpreise oder andere berechnete Felder), können nicht in der Sortierung (IndexName) verwendet werden. - Bei der Filterbedingung sind nur echte Datenbankfelder mit reellen, festen Werten zulässig - Kennzeichen bzw. Boolean-Felder gelten ebenfalls als berechnete Felder und sind daher nicht zulässig. - Achten Sie darauf, nur Werte mit gleicher Einheit auszuwerten - z. B. bei Betragswerten aus Vorgängen immer eine einheitliche Leitwährung verwenden, da sonst ein falsches Ergebnis entstehen kann.
ℹ️ Hinweis zu KeyFieldCount Die Anzahl der RangeStart- und RangeEnd-Werte muss mit dem KeyFieldCount übereinstimmen. Bei KeyFieldCount = 1 wird ein RangeStart- und ein RangeEnd-Wert angegeben, bei KeyFieldCount = 2 entsprechend zwei RangeStart- und zwei RangeEnd-Werte usw.
Beispiele
Anzahl der Vorgänge einer Adresse:
$Aggregate(Vorgang,AdrNr,"Cnt","AdrNr",1,«Vog.AdrNr»,«Vog.AdrNr»)
Durchschnittsbetrag Netto der Vorgänge einer Adresse:
$Aggregate(Vorgang,GPreisNt,"Avg","AdrNr",1,«Vog.AdrNr»,«Vog.AdrNr»)
Minimaler Netto-Gesamtpreis der Vorgänge einer Adresse bei Vorgangsart 30 (inkl. Filterbedingung):
$Aggregate(Vorgang,GPreisNt,Min,AdrNr,1,«Adr.AdrNr»,«Adr.AdrNr»,Art = 30)
Verwendung im Druckdesigner
Die Funktion "Aggregate" lässt sich auch im Druckdesigner nutzen - dort werden die Werte statt mit Kommata mit einem geraden Strich ("Pipe", |) getrennt:
Aggregate("TableName"|"FeldName"|"Funktion"|"IndexName"|KeyFieldCount|"RangeStart"|"RangeEnd")
Details dazu: Aggregate (Druckdesigner)