Ausdrücke

Ausdrücke arbeiten mit folgenden Datentypen:

  • „Boolean“ (analog VB/VBA wird False durch 0 und True durch -1 repräsentiert, andere Werte werden als True ausgewertet)
  • „Int32“
  • „Decimal“
  • „Date“
  • „DateTime“
  • „Time“
  • „String“

Der Datentyp „Int16“ ist ebenfalls erlaubt, wird allerdings vor Berechnungen automatisch in „Int32“ konvertiert.

Datentypen werden bei Bedarf wie folgt konvertiert (recht restriktiv, um Fehler auszuschließen):

  • „Boolean“ wird
    • automatisch in „Int32“ bzw. „Decimal“ konvertiert (False wird zu 0, True wird zu -1)
    • nicht in „Date“ konvertiert
    • nicht in „DateTime“ konvertiert
    • nicht in „String“ konvertiert
  • „Int32“ wird
    • automatisch in „Boolean“ konvertiert (0 wird zu False, alle anderen Werte werden zu True)
    • automatisch in „Decimal“ konvertiert
    • nicht in „Date“ konvertiert
    • nicht in „DateTime“ konvertiert
    • nicht in „String“ konvertiert
  • „Decimal“ wird
    • automatisch in „Boolean“ konvertiert (0 wird zu False, alle anderen Werte werden zu True)
    • automatisch in „Int32“ gerundet
    • nicht in „Date“ konvertiert
    • nicht in „DateTime“ konvertiert
    • nicht in „String“ konvertiert
  • „Date“ wird
    • automatisch in „DateTime“ konvertiert
    • nicht in „Boolean“ konvertiert
    • nicht in „Int32“ konvertiert
    • nicht in „Decimal“ konvertiert
    • nicht in „String“ konvertiert
  • „DateTime“ wird
    • automatisch in „Date“ konvertiert, wenn die Uhrzeit „00:00:00“ ist
    • nicht in „Boolean“ konvertiert
    • nicht in „Int32“ konvertiert
    • nicht in „Decimal“ konvertiert
    • nicht in „String“ konvertiert
  • „String“ wird nicht automatisch konvertiert

Ergebnisse werden wiederum entsprechend dem Ziel konvertiert, wobei anstelle von „Int32“-Konvertierungen bei Bedarf auch „Int16“-Konvertierungen vorgenommen werden.

Ausdrücke enthalten einen berechenbaren Ausdruck, der aus folgenden Elementen bestehen kann:

  • Feldreferenzen zum Referenzieren von Werten in den aktuell geladenen Daten (siehe Kapitel Feldreferenzen)
  • numerische Werte, bestehend aus Ziffern, optionalem Plus- oder Minus-Vorzeichen und optionalem Punkt als Dezimalzeichen
  • numerische Operatoren:
    • „+“, „-“, „*“ und „/“
    • „\“ (ganzzahlige Division)
    • „%“ (Modulo)
    • MOD (ganzzahliger Modulo)
    • „^“ (Potenz)
    • Klammern („(“ und „)“)
  • Vergleichsoperatoren („<“, „>“, „<=“, „>=“, „=“ und „<>“; diese liefern als Ergebnis False und True)
  • logische Operatoren („NOT“, „AND“, „OR“ und „XOR“)
    • soweit bei „NOT“ der Operand vom Typ „Boolean“
      bei „AND“, „OR“ und „XOR“ beide Operanden vom Typ „Boolean“ sind,
      liefern die Operatoren als Ergebnis False oder True
    • ansonsten wird bei „NOT“ der Operand nach entsprechender „Integer“-Konvertierung bitweise negiert
      werden bei „AND“, „OR“ und „XOR“ die Operanden nach „Integer“-Konvertierung bitweise verknüpft
      (Ergebnis ist immer vom Typ „Integer")
    • bei "AND", "OR" und "XOR" werden immer beide Seiten des Operators ausgewertet
  • Strings, eingeschlossen in Anführungszeichen ( “ )
  • String-Verkettung mit „&“
  • Datums-Konstanten im ISO-Format („yyyy-mm-dd“ bzw. „yyyy-mm-ddThh:mm:ss“) in Abgrenzungszeichen ( „#“ )
  • Beispiel: „#2014-12-24#“ bzw. „#2014-12-24T18:45:00#“
  • Zeit-Konstanten analog zu Datums-Konstanten („Thh:mm:ss“) in Abgrenzungszeichen ( „#“ )
    • Beispiel: „#T18:45:00#“
  • Konstanten:
    • False und True (entsprechen 0 und -1)
    • CRLF (Zeilenumbruch für Texte)
  • numerische Funktionen:
    • „ABS(parameter)“ (Betrag)
    • „ACOS(parameter)“ (Arcus Cosinus)
    • „ASIN(parameter)“ (Arcus Sinus)
    • „ATAN(parameter)“ und „ATN“ (Arcus Tangens)
    • „ATN2(parameter1,parameter2)“ Winkel im Bogenmaß (Radiant) zwischen der positiven X-Achse und dem Strahl vom Ursprung zum Punkt (x, y))
      • Parameter 1: Wert x des Punktes
      • Parameter 2: Wert y des Punktes
    • „CEILING(parameter)“ (kleinste Ganzzahl, die größer oder gleich dem übergebenen Ausdruck ist)
    • „COS(parameter)“ (Cosinus)
    • „COT(parameter)“ (Cotangens)
    • „DEGREES(parameter)“ (Umwandlung Winkel im Bogenmaß in Gradmaß)
    • „EXP(parameter)“ (e-Funktion)
    • „FIX(parameter)“ (ganzzahliger Anteil)
    • „FLOOR(parameter)“ (größte ganze Zahl, die kleiner oder gleich dem übergebenen Ausdruck ist)
    • „IIF(parameter1,parameter2,paramter3)“ (in Abhängigkeit von Parameter 1 wird Parameter 2 (bei True) oder Parameter 3 (bei False) zurückgegeben)
    • „INT(parameter)“ (identisch zu „FLOOR“)
    • „LOG(parameter)“ (natürlicher Logarithmus)
    • „LOG10(parameter)“ (Logarithmus zur Basis 10)
    • „PI()“ (Konstante Pi; Funktion ohne Parameter)
    • „POWER(parameter1,parameter2)“ (Potenzfunktion; identisch zu <parameter1>^<parameter2>)
    • „RADIANS(parameter)“ (Umwandlung Winkel im Gradmaß in Bogenmaß)
    • „ROUND(parameter1,parameter2)“ bzw. „ROUND(parameter1,parameter2,parameter3)“ (Runden eines numerischen Ausdrucks gemäß IEEE-754-Standard; d.h. wenn die Ziffer an der ersten wegfallenden Dezimalstelle lediglich eine 5 oder eine 5, auf die nur Nullen folgen, ist, wird derart gerundet, dass die letzte beizubehaltende Ziffer gerade wird)
      • Parameter 1: zu rundender Wert
      • Parameter 2: Anzahl der gewünschten Nachkommastellen (negative Werte runden auf der linken Seite des Kommas)
      • Parameter 3 (optional): Angabe, ob gerundet (0; Standard) oder gekürzt (alle anderen Werte) werden soll
    • ROUNDC(parameter1,parameter2)“ (Kaufmännisches Runden eines numerischen Ausdrucks gemäß DIN 1333; d.h. wenn die Ziffer an der ersten wegfallenden Dezimalstelle eine 0, 1, 2, 3 oder 4, dann wird abgerundet und bei 5, 6, 7, 8 oder 9, dann wird aufgerundet.
      • Parameter 1: zu rundender Wert
      • Parameter 2: Anzahl der gewünschten Nachkommastellen (negative Werte runden auf der linken Seite des Kommas)
    • „SGN(parameter)“ (Vorzeichenfunktion; 1 bei positiven Werte, -1 bei negativen Werten und 0 bei Null)
    • „SIGN(parameter)“ (identisch zu „SGN“)
    • „SIN(parameter)“ (Sinus)
    • „SQR(parameter)“ (Quadratwurzel)
    • „SQRT(parameter)“ (identisch zu „SQR“)
    • „SQUARE(parameter)“ (Quadratfunktion)
    • „TAN(parameter)“ („Tangens“)
  • Datum-Zeit-Funktionen:
    • „DATEADD(parameter1,parameter2,parameter3)“ (Addition von Zeiteinheiten auf einen Datum-Zeit-Wert)
      • Parameter 1: Einheit (String)
        • „year“ oder „yyyy“ oder „yy“ für Jahr
        • „quarter“ oder „qq“ oder „q“ für Quartal
        • „month“ oder „mm“ oder „m“ für Monat
        • „day“ oder „dd“ oder „d“ für Tag
        • „week“ oder „wk“ oder „ww“ für Woche
        • „hour“ oder „hh“ für Stunde
        • „minute“ oder „mi“ oder „n“ für Minute
        • „second“ oder „ss“ oder „s“ für Sekunde
      • Parameter 2: Anzahl (Int32)
      • Parameter 3: Datum (Date)
    • „DATEDIFF(parameter1,parameter2,parameter3)“ (Differenz zwischen zwei Datum-Zeit-Werten)
      • Parameter 1: Einheit (String) analog „DATEADD“
      • Parameter 2: Startwert
      • Parameter 3: Endwert
    • „DATESERIAL(parameter1,parameter2,parameter3)“ („Date“ aus Integer-Werten erzeugen)
      • Parameter 1: Jahr
      • Parameter 2: Monat
      • Parameter 3: Tag
    • „DAY(parameter)“ (Tag des Datum-Zeit-Wertes)
    • „GETDATE()“ (aktuelles Systemdatum ohne Uhrzeit)
    • „GETDATETIME()“ (aktuelles Systemdatum mit Uhrzeit)
    • „MONTH(parameter)“ (Monat des Datum-Zeit-Wertes)
    • „TIMESERIAL(parameter1,parameter2,parameter3)“ („Time“ aus Integer-Werten erzeugen)
      • Parameter 1: Stunden
      • Parameter 2: Minuten
      • Parameter 3: Sekunden
    • „YEAR(parameter)“ (Jahr des Datum-Zeit-Wertes)
  • String-Funktionen:
    • „LEFT(parameter1,parameter2)“ (linker Teil eines Strings mit Angabe der gewünschten Zeichenanzahl)
      • Parameter 1: String
      • Parameter 2: gewünschte Zeichenzahl
    • „LEN(parameter)“ (String-Länge)
    • „LOWER(parameter)“ (Konvertierung des Strings in Klein-Buchstaben)
    • „LTRIM(parameter)“ (Abschneiden von Leerzeichen auf der linken Seite)
    • „REPLACE(parameter1,parameter2,parameter3)“ (Ersetzen einer Zeichenfolge durch eine andere)
      • Parameter 1: String
      • Parameter 2: gesuchte und zu ersetzende Zeichenfolge
      • Parameter 3: Zeichenfolge, durch die die Zeichenfolge in Parameter 2 ersetzt werden soll
    • „RIGHT(parameter1,parameter2)“ (rechter Teil eines Strings mit Angabe der gewünschten Zeichenanzahl)
      • Parameter 1: String
      • Parameter 2: gewünschte Zeichenzahl
    • "ISREGEXMATCH(parameter1,paramater2)" (Prüfung, ob Parameter 1 dem regulären Ausdruck in Parameter 2 entspricht; Ergebnis ist True bzw. False;

Hinweise:                   

   Funktionalität gleicht der der .NET-Funktion "Regex.IsMatch", siehe auch https://msdn.microsoft.com/de-de/library/sdx2bds0(v=vs.110).aspx)

   Es wird der ECMAScript-Standard unterstützt, siehe https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-options , Abschnitt "ECMAScript Matching Behavior"

  • Verwendete Tools zur Erstellung eines RegEx-Musters sollten entsprechend konfiguriert werden. z.B. auf https://regex101.com/ "FLAVOR" = "ECMAScript (JavaScript)" verwenden
    • „RTRIM(parameter)“ (Abschneiden von Leerzeichen auf der rechten Seite)
    • „SUBSTRING(parameter1,parameter2,parameter3)“ (Teil eines Strings)
      • Parameter 1: String
      • Parameter 2: Start (Int32)
      • Parameter 3: Länge (Int32)
    • „ToDecimal(parameter)“ (Gibt die in einer Zeichenfolge enthaltene Zahl als numerischen Wert mit Decimal-Datentyp zurück. Ergibt das Ergebnis keine Zahl, wird 0 ermittelt. Es können keine Laufzeitfehler auftreten.)
    • "ToString(parameter)" (Darstellung von Werten in Frontend-Texten mit den aktuellen Kultureinstellungen für Dezimaltrennzeichen, Datumsformat, etc.; keine Server-seitige Verwendung (Laufzeitfehler))
      • Numerische Werte werden angelehnt an den numerischen Formatbezeichner ("N") des .NET-Frameworks formatiert (siehe auch https://docs.microsoft.com/de-de/dotnet/standard/base-types/standard-numeric-format-strings#the-numeric-n-format-specifier). Das Format wird per Doppelpunkt von der Zahl separiert und als großes "N" angegeben. Die Angabe ist optional.
        Dabei gilt:
        • Bei negativen Zahlen wird ein Minuszeichen ("-") vorangestellt.
        • Es wird ein Tausendertrennzeichen verwendet.
        • Dezimalstellen werden mit einem Dezimaltrennzeichen separiert.
        • Die Anzahl der Nachkommastellen wird nachfolgend zum "N" angegeben. Bei fehlender Angabe wird 2 angenommen.
      • Datumswerte müssen im ISO Format "yyyy-mm-dd" angegeben werden.
      • Ist der Wert bereits ein String, bleibt er unverändert.
      • Boolean-Werte sind nicht erlaub.
      • Beispiele (bei Client mit deutscher Kultur):
        ToString(1234.56) -> Ergebnis: 1.234,56
        ToString(1234.56:N4) -> Ergebnis: 1.234,5600
        ToString(2021-10-09) -> Ergebnis: 09.10.2021
    • „TRIM(parameter)“ (Abschneiden von Leerzeichen auf der beiden Seiten)
    • „UPPER(parameter)“ (Konvertierung des Strings in Groß-Buchstaben)
  • Ergänzende Funktionen
    • "GetDirectory(parameter)" (Ermittlung von bestimmten lokalen Verzeichnissen)
      • Steht nur auf dem Client zur Verfügung. Auf dem AppServer wird ein Fehler ausgelöst.
      • Die Rückgabe erfolgt immer ohne Backslash am Ende.
      • Die folgenden Parameter sind gültig, alle anderen führen zu einem Fehler (Groß-/Kleinschreibung spielt keine Rolle):
        • "Temp" => z.B. "C:\Users\<Benutzername>\AppData\Local\Temp"
        • "InstallDir" => z.B. "C:\Program Files (x86)\Sage\Sage 100\9.0"
        • "UserDocuments" => z.B. "C:\Users\<Benutzername>\Documents"
    • "GetFileExtension(parameter)" (Dateinamenerweiterung eines Dateinamens ermitteln ("pdf", "xml", etc.))
    • "GetFollowUpParams(parameter1, parameter2)" (Erstellung eines Parameterstrings für eine Datensatzwiedervorlage)
      • Parameter 1: Vollständiger Name des Daten-Edit-Elements, das bei Ausführung der Wiedervorlage angezeigt werden soll
      • Parameter 2: Schlüsselinformationen des Datensatzes, für den die Wiedervorlage erzeugt werden soll; mehrere Schlüsselelemente (z.B. Artikelnummer und Ausprägungs-ID) werden durch „#*#“ (ohne Anführungszeichen) getrennt (z.B. "12345678#*#43")
    • "IsLegacyClient()" prüft, ob es sich beim Client um den Access-Client handelt (True) Ansonsten handelt es sich um den neuen Client (False).


Ergänzende Funktionen mit eingeschränktem Einsatzbereich:

Funktion

Erläuterung

Daten-Edit-Element

Multi-Daten-Edit-Element

Selektions-Element

Listen-Element und Baum-Element

Datenklassen-FeldWeitere Einsatzzwecke
GetActiveNavigationPartName()Gibt in Daten-Edit-Elementen mit Navigationselement den Namen des gerade aktiven Navigations-Elements zurück. Gibt es kein Navigations-Element oder ist es kein Daten-Edit-Element, wird stattdessen ein Leerstring zurück gegeben.(tick)




GetDataRefValue(feldreferenz, spaltenname)

Gibt den Wert der angegebenen Spalte einer Datenreferenz eines Felds bzw. der Auswahl eines Listen-Sub-Elementes zurück.

(tick)

(tick)

(tick)

(tick)



GetDropFormat()

Ab Version 9.0.3

Ruft im "OnDrop"-Ereignis den Formatnamen der Drag&Drop-Aktion ab.

Mögliche Formate analog zum Attribut "DropFormats" des Elementes.


(tick)
(tick)

GetDropValue()

Ruft im "OnDrop"-Ereignis den Inhalt der Drag&Drop-Aktion ab.

Bei den Drop-Formaten "FileDrop", "FileDrop-Multi", "EMail" und "EMail-Multi" (siehe Attribut "DropFormats") sind dies ein oder mehrere Datei-Pfadnamen (dann mit Semikolon getrennt). Die Datei-Pfad-Namen sind in Anführungsstriche eingeschlossen.


(tick)
(tick)

GetKeyFieldValue(schlüsselfeldnummer)

Liefert den Wert eines Schlüsselfeldes.

Diese Funktion wird verwendet, wenn kein anderer Datenkontext vorhanden ist und deshalb Feldreferenzen nicht aufgelöst werden können:

  • Im Kontextmenü-Eintrag im Makro eines Datenklassen-Feldes.
    Der Parameter ist die Schlüsselfeld-Nummer (1 bis 3), siehe Attribut "FieldNameKey", ...
  • Beim Löschen einer Datenstruktur im "BeforeDelete"/"AfterDelete"-Makro.
    Der Parameter ist die Schlüsselfeld-Nummer (1 bis 9), siehe Attribute "PrimaryKey1“, …
  • Im Kontextmenü-Eintrag im Makro eines Listen-Elementes.
    Der Parameter ist die Schlüsselfeld-Nummer(1 bis 9) der Datenquelle des Listen-Elementes, siehe Attribute "PrimaryKey1", …




(tick)Datenstruktur: Ereignisse "BeforeDelete" und "AfterDelete"
GetMatchcodeFieldValue(schlüsselfeldnummer)

Liefert den Wert eines Matchcode-Feldes einer Datenklasse.

Diese Funktion wird verwendet, wenn kein anderer Datenkontext vorhanden ist und deshalb Feldreferenzen nicht aufgelöst werden können:

  • Im Kontextmenü-Eintrag im Makro eines Datenklassen-Feldes.
    Der Parameter ist die Matchcode-Feld-Nummer (1 bis 3), siehe Attribut "SqlQueryMatchcode", ...




(tick)

ExistsVariable(dialogvariable)

(Ab Version 9.0.2)

Prüft die Existenz einer lokalen Makro-Variable (beginnend mit einem Unterstrich) oder die Existenz einer Dialog-Variable (beginnend mit zwei Unterstrichen).

  • True wenn vorhanden
  • sonst False

Zum Setzen eines Feldes auf "leer", steht der Makro-Befehl "FestlegenFeldLeer" zur Verfügung.

(tick)




IsEmpty(feldreferenz)

Enthält das referenzierte Feld einen leeren String ("") bzw. keinen Wert (Null oder Nothing in .Net Sprachen)?

  • True, wenn leer oder kein Wert
  • sonst False

(tick)

(tick)

(tick)




IsEnabled(feldreferenz)

Ist das referenzierte Feld aktiv (enabled)?

  • True wenn aktiv
  • sonst False

Das komplementäre Makro-Kommando ist "FestlegenFeldAktiv".

(tick)

(tick)

(tick)




IsFromField()

Ist das aktuelle Feld das Von-Feld eines Von-Bis-Feldes (Metadaten-Eigenschaft „IsFromTo“)?

  • True, wenn es sich um ein Von-Feld handelt und die Ausführung auf dem Client erfolgt
  • sonst False

Szenario:

  • Bei Von-Bis-Feldern werden Feld-bezogene Makros zweimal ausgeführt. Hierüber kann festgestellt werden, für welchen Teil das Makro zurzeit läuft.



(tick)




IsReadOnly(feldreferenz)

Ist das referenzierte Feld schreibgeschützt?

  • True, wenn schreibgeschützt
  • sonst False

Das komplementäre Makro-Kommando ist "FestlegenNurLesen".

(tick)

(tick)

(tick)




IsRecordInsert()

Ist das laufende Makro wegen „Datensatz einfügen“ aufgerufen worden?

  • True, wenn neuer Datensatz
  • False wenn geänderter Datensatz

Nur gültig im „BeforeUpdate“-Ereignis eines Datensatzes bzw. einer Datenstruktur. Das Ereignis tritt sowohl bei „Insert“, als auch bei „Update“ auf.

(tick)

(tick)





IsRunningOnServer()

Wird das laufende Makro auf dem Server ausgeführt?

  • True, wenn Server-seitige Ausführung
  • sonst False

Szenario:

  • Im Datensatz wird das Ereignis „BeforeUpdate“ Client- und Server-seitig ausgeführt.
  • Bei True-Validierungen der Funktion können Makros nur Server-seitig ausgeführt werden.
  • Bei False-Validierungen der Funktion können Makros, die evtl. UI-Funktionalität verwenden, nur Client-seitig ausgeführt werden

(tick)

(tick)





IsToField()

Analog zu „IsFromField“ für das Bis-Feld.



(tick)




IsVisible(feldreferenz)

Ist das referenzierte Feld sichtbar?

  • True, wenn das Feld sichtbar ist
  • sonst False

Das komplementäre Makro-Kommando ist "FestlegenFeldSichtbar".

(tick)

(tick)

(tick)




ItemCount(feldreferenz)

Gibt die Anzahl der Positionen zurück, wenn <feldreferenz> ein Multi-Data-Edit-Element adressiert, sonst ungültig (Laufzeitfehler).

(tick)






MyFieldnameInParent()

Gibt den Feldnamen zurück, unter dem das aktuelle Element im übergeordneten Element geführt wird.

Szenario:

  • In den Zahlungskonditionen wird in drei Feldern jeweils das gleiche Multi-Data-Edit Element verwendet. Wird per Kontextmenü im MDEE ein Daten-Service ausgeführt, kann dieser nicht feststellen aus welchem Element er aufgerufen wurde. Deshalb wird der Feldname mit Hilfe dieser Funktion als Parameter übergeben.


(tick)





Pagename()

Gibt den Namen der aktuellen Seite eines Selektions-Elementes zurück, der als Assistenten-Dialog eingesetzt wird.



(tick)




PartGuid()

Gibt im Selektions-Element den Konfigurations-Schlüssel des aufrufenden Dialogs zurück.

Sonderfall: Erfolgt der Aufruf aus einem Master-Detail Element, wird der Konfigurations-Schlüssel des Master-Elementes zurückgegeben, falls ein Master vorhanden ist.

Szenario:

  • Wird im Kontext der "Zeitachse"“ verwendet, um Server-seitig die Selektionswerte für eine Auskunft oder für die Instanzen eines Listen- oder Diagramm-Elementes im Control-Center zu verwenden.

Siehe auch Platzhalter "$[PartGuid]" für SQL und Funktions-Parameter. Dieser gibt die gleiche ID zurück.



(tick)




IsMultiSelect(feldreferenz)

Liegt eine Mehrfachauswahl vor (anstatt Von-Bis-Werten)?

Nur für Von-Bis-Felder (siehe Metadaten-Eigenschaften "IsFromTo" und "AllowMultiselect" der Datenstruktur).

  • bei True:
    Der Multiselekt-Wert wird über den Feldnamen (ohne Ergänzung) referenziert. Er kann für den Makro-Befehl "FürJedenWert" verwendet werden.
  • bei False:
    Die Werte werden über den Feldnamen mit den Ergänzungen "Von" bzw. "Bis" referenziert.


(tick)


IsMultiSelectField()

Gibt zurück, ob die Mehrfachauswahl-Suche eines Von-Bis Feldes ausgeführt wird (anstelle der Suche aus Von- bzw. Bis-Feld).

  • True, wenn die Mehrfachauswahl-Suche eines Von-Bis Feldes ausgeführt wird,
  • sonst False

Nur für Von-Bis-Felder (siehe Metadaten-Attribute "IsFromTo" und "AllowMultiselect" der Datenstruktur).

Anders als "IsMultiSelect([Feldreferenz])" wird "IsMultiSelectField()" nur im "BeforeSearch"- und im "AfterSearch"-Makro eines Von-Bis Feldes ausgewertet, d.h. in anderen Feldern bzw. Makros wird immer False zurückgegeben.

Das Ergebnis wird unabhängig vom Feldinhalt ermittelt, d.h. auch wenn das Feld noch keinen Semikolon-separierten Wert enthält (z.B. bei erster Ausführung des "BeforeSearch"- bzw. "AfterSearch"-Makros) kann mit "IsMultiSelectField()" ermittelt werden, ob die Mehrfachauswahl-Suche ausgeführt wird.


       (tick)


  • "GetDirectory(parameter)" (Ermittlung von bestimmten lokalen Verzeichnissen)








Ein explizites Zuweisungszeichen („=“) ist nicht vorgesehen.

Werden in komplexen Ausdrücken mehrere Operatoren verwendet, so wird die Reihenfolge der Auswertung durch den Rang der Operatoren gemäß der folgenden Liste festgelegt. Die unären Operatoren der ersten Zeile sind die am stärksten bindenden Operatoren:

  • unäre Operatoren „+“ und „-“ (Vorzeichen)
  • „^“ (Potenz)
  • „*“, „/“, „\“ (ganzzahlige Division), „%“ (Modulo), „MOD“ (ganzzahliger Modul)
  • „+“, „-“, String-Verkettung („&“)
  • Vergleichsoperatoren („=“, „<“, „>“, „<=“, „>=“, „<>“)
  • logischer Operator „NOT“
  • logischer Operator „AND“
  • logischer Operator „OR“
  • logischer Operator „XOR“

Bei gleichem Rang erfolgt die Auswertung von links nach rechts. Die Rangfolge wird durch Klammerung überschrieben.

Ausdrücke können Platzhalter enthalten, die beim Download vom Server ersetzt werden. Hierdurch können z.B. Lizenzinformationen und Landabfragen genutzt werden.

Alle Werte in den Ausdrücken werden kulturunabhängig verarbeitet.

  • Abgerufene Feldwerte (über in eckigen Klammern angegebene Feldnamen) erzeugen eine kulturunabhängige Textdarstellung).
  • Konstante Werte müssen in kulturunabhängiger Formatierung angegeben werden.

Beispiele für kulturunabhängige Formatierungen:

  • Datumswerte werden im ISO-Format ("JJJJ-MM-TT") ohne Zeit formatiert.
    • Beispiel: Der "27.05.2020" wird dargestellt als "2020-05-27".
  • Nummerische Werte haben als Dezimaltrennzeichen den Punkt.