Zum Inhalt

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)

Weiterführende Informationen