Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

Verarbeitung von Tabellen

AddLineItem()

Diese Funktion fügt eine künstliche Zeile zu einer Indexdatentabelle des aktuellen Dokumentes hinzu. Die Parameterliste ist variabel lang und besteht abwechselnd aus dem vollständigen Namen des Zielfeldes in der Tabelle, wie dieser im Feldkatalog definiert ist, d.h. {Tabellenname}.{Spaltenname}, und dem in dieses Feld einzufügenden Wert.

Innerhalb eines Funktionsaufrufs dürfen nur Felder derselben Zieltabelle angesprochen werden. Wenn nicht für alle Felder der betreffenden Tabelle ein Wert angegeben wird, behalten die übrigen Felder ihren Initialwert.

Die Adressierung von Untertabellen ist ebenfalls möglich, jedoch ist dann für die übergeordnete Tabelle die Nummer einer konkreten, bereits existierenden Zeile mit anzugeben:

{Tabellenname}[{Zeilennummer}].{Untertabellenname}.{Spaltenname}.

Parameter

Datentyp

Beschreibung

1

Text

erster Name eines Tabellenfeldes

2

(variabel)

Wert des zuvor genannten Tabellenfeldes

n-1

Text

letzter Name eines Tabellenfeldes

n

(variabel)

Wert des zuvor genannten Tabellenfeldes

Beispiele

AddLineItem("Items.Field1", "ABC", "Items.Field2", 123) hängt eine Zeile an die Tabelle Items an und belegt die Tabellenfelder Field1 und Field2 mit Werten.

AddLineItem("Items.LineNo", LineItemCount("Items") + 1) hängt eine fast leere Zeile an die Tabelle Items, in der nur das Feld LineNo mit der Zeilennummer vorbelegt wird. Die Zeilennummer ergibt sich durch das Hochzählen der aktuellen Zeilenanzahl der Zieltabelle.

AggregateLineItems()

Diese Funktion aggregiert die Werte zu bildender Gruppen von Zeilen einer Indexdatentabelle zu jeweils einer einzigen Zeile. Die Aggregation erfolgt separat pro Feld über alle Zeilen einer Gruppe, wobei nur elementare Datentypen unterstützt werden. Die Parameterliste ist variabel lang und besteht ab der dritten Position abwechselnd aus dem vollständigen Namen eines zu aggregierenden Tabellenfeldes, wie dieser im Feldkatalog definiert ist, d.h. {Tabellenname}.{Spaltenname}, und dem Aggregationsmodus (s.u.). Wenn ein vorhandenes Tabellenfeld dabei nicht aufgeführt ist, wird implizit nur dessen Wert aus der ersten Zeile der Gruppe übernommen.

Die Adressierung von Untertabellen ist ebenfalls möglich, jedoch ist dann für die übergeordnete Tabelle die Nummer einer konkreten, bereits existierenden Zeile mit anzugeben:

{Tabellenname}[{Zeilennummer}].{Untertabellenname}.{Spaltenname}.

Parameter

Datentyp

Beschreibung

1*

Text

Modus, wie die Gruppen der Zeilen gebildet werden, die jeweils zu einer Zeile zusammenzufassen sind:

  • FixedLineNo: eine feste Anzahl aufeinanderfolgender Zeilen bildet jeweils eine Gruppe

  • StartCondition: aufeinanderfolgende Zeilen bilden eine Gruppe

    Welche Zeile den Anfang einer neuen Gruppe darstellt, wird über eine inhaltsbezogene Bedingung ermittelt.

  • EndCondition: aufeinanderfolgende Zeilen bilden eine Gruppe

    Welche Zeile das Ende der laufenden Gruppe darstellt, wird über eine inhaltsbezogene Bedingung ermittelt.

  • RepeatCondition alle Zeilen, die über einen bestimmten identischen Eigenschaftswert verfügen, werden zu einer Gruppe zusammengefasst, unabhängig von ihrer Reihenfolge

2*

(variabel)

Makroausdruck, der abhängig von obigem Modus die Bedingung oder den Wert zurückliefern muss, auf Basis dessen die Gruppierung erfolgt

Das Makro wird – abgesehen vom Modus FixedLineNo – pro Zeile ausgeführt und sollte Feldvariablen nutzen, die sich auf die Tabellenfelder beziehen.

  • Für FixedLineNo: ein numerischer Wert der festen Zeilenanzahl pro Gruppe

  • Für StartCondition und EndCondition: ein Wahrheitswert, ob die aktuelle Zeile den Anfang bzw. das Ende einer Gruppe darstellt

  • Für RepeatCondition: ein Wert beliebigen Typs, der für zusammengehörige Zeilen jeweils gleich sein muss

3

Text

erster Name eines zu aggregierenden Tabellenfeldes

4

Text

Modus, wie die Werte des zuvor genannten Tabellenfeldes aggregiert werden:

  • First: Nur der Wert aus der ersten Zeile der Gruppe wird übernommen.

  • Last: Nur der Wert aus der letzten Zeile der Gruppe wird übernommen.

  • Array: Die Werte werden zu einem Array zusammengefasst.

  • Join oder Join[{Trennzeichen}]: Die Werte werden zu einer per Trennzeichen separierten Zeichenfolge zusammengefasst. Für typisierte Werte findet dabei eine Umwandlung in die interne String-Notation statt. Das Trennzeichen kann optional mit angegeben werden (Standardwert: Komma).

  • And oder Or: Die Werte werden als Wahrheitswerte miteinander UND- oder ODER-verknüpft. Wenn ein Wert nicht als Wahrheitswert interpretierbar ist, wird der Wert implizit auf "FALSE" gesetzt.

  • Sum oder Avg: Für die Werte wird numerisch die Summe oder der Durchschnittswert berechnet. Wenn ein Wert nicht als Zahlenwert interpretierbar ist, wird der Wert implizit auf 0 gesetzt.

n-1

Text

letzter Name eines zu aggregierenden Tabellenfeldes

n

Text

Modus, wie die Werte des zuvor genannten Tabellenfeldes aggregiert werden

Beispiele

Eine Tabelle umfasst beispielsweise die folgenden Felder und Werte:

LineItems.KeyField

LineItems.Field_A

LineItems.Field_B

LineItems.Field_C

"Key1"

"A1"

"B1"

1

"Key2"

"A2"

"B2"

2

"Key1"

"A3"

"B3"

3

"Key2"

"A4"

"B4"

4

Bei der Ausführung dieses Makroausdrucks werden die Zeilen 1 und 3 sowie die Zeilen 2 und 4 wie folgt zusammengefasst:

AggregateLineItems("RepeatCondition", @LineItems.KeyField, "LineItems.Field_A", "Array", "LineItems.Field_B", "Join", "LineItems.Field_C", "Sum")

LineItems.KeyField

LineItems.Field_A

LineItems.Field_B

LineItems.Field_C

"Key1"

["A1","A3"]

"B1,B3"

4

"Key2"

["A2","A4"]

"B2,B4"

6

ClearLineItems()

Diese Funktion löscht alle vorhandenen Zeilen aus einer Indexdatentabelle.

Parameter

Datentyp

Beschreibung

1

Text

optionaler Name der betreffenden Tabelle, d.h. der im Feldkatalog für Tabellenfelder genutzte Namensanteil für die übergeordnete Tabelle

Wenn der Name nicht angegeben wird, wird die erste im Dokument vorhandene Tabelle herangezogen.

Beispiele

ClearLineItems("Items") leert die Tabelle Items.

ForEachLineItem()

Diese Funktion läuft in einer Schleife über alle Zeilen einer Indexdatentabelle und führt im Kontext der jeweiligen Zeile einen Makroausdruck aus. Optional kann die Ausführung an eine Bedingung gebunden werden.

Parameter

Datentyp

Beschreibung

1*

Text

Name der Tabelle, d.h. der im Feldkatalog für Tabellenfelder genutzte Namensanteil für die übergeordnete Tabelle

2

Bool

optionaler Wahrheitswert, ob für eine Zeile das Makro tatsächlich ausgeführt wird, sinnvollerweise in Form eines dynamischen Makroausdrucks

3*

(keiner)

Makroausdruck, der für eine Tabellenzeile ausgeführt wird

Ein möglicher Rückgabewert des Makros wird nicht ausgewertet. Stattdessen ist der Ausdruck in Form einer Zuweisung zu formulieren, um Werte in der betreffenden Zeile oder in den Kopfdaten zu ändern.

Beispiele

Eine Tabelle umfasst die folgenden Felder und Werte. Es gibt ein Kopfdatenfeld "Sum" mit dem Initialwert 0.

LineItems.Field_A

LineItems.Field_B

LineItems.Field_C

"A1"

"B1"

1

"A2"

"B2"

2

Mit dem folgenden Makroausdruck werden je Zeile 2 verschiedene, als Block zusammengefasste Aktionen ausgeführt. Der Wert im zweiten Tabellenfeld wird verändert und die Werte des dritten Tabellenfeldes werden in dem Kopfdatenfeld "Sum" aufsummiert.

ForEachLineItem("LineItems", , { @LineItems.Field_B = @LineItems.Field_B + "!"; @Sum = @Sum + @LineItems.Field_C })

Im Ergebnis lauten die neuen Werte des zweiten Tabellenfeldes und des Kopfdatenfeldes "B1!", "B2!" und 3.

RemoveLineItems()

Diese Funktion löscht bestimmte Zeilen aus einer Indexdatentabelle abhängig von einer Bedingung.

Parameter

Datentyp

Beschreibung

1

Text

optionaler Name der betreffenden Tabelle, d.h. der im Feldkatalog für Tabellenfelder genutzte Namensanteil für die übergeordnete Tabelle

Wenn der Name nicht angegeben ist, wird die erste im Dokument vorhandene Tabelle herangezogen.

2*

Bool

Makroausdruck, der pro Tabellenzeile ausgeführt wird und einen Wahrheitswert zurückliefern muss, ob die betreffende Zeile gelöscht werden soll

Der Makroausdruck sollte Feldvariablen nutzen, die sich auf die Tabellenfelder beziehen.

Beispiele

RemoveLineItems("Items", IsEmpty(@Items.Field1)) löscht alle Zeilen aus der Tabelle Items, in denen das Feld Field1 leer ist.