Funktionen im Feldeditor (Regeln)
Im Feldeditor können - wie im Druckdesigner - Operatoren und Funktionen genutzt werden.
Beachten Sie:
Diese Funktionen werden je nach Verwendungszweck (Exportfilter, Bedingungen in Regeln) mit einem $-Zeichen
an erster Stelle eingegeben.
Sofern eine Funktion verwendet wird, die parametrisiert werden kann, muss dies in der Regelbedingung anders als in einer Regelanweisung eingegeben werden.
Beispielsweise kann die Funktion "**GetAktDate()**
" z. B. folgende Parameter enthalten: "Time" oder auch "Server, Time".
Regel-Bedingung | Regel-Anweisung |
---|---|
GetAktDate(**'Time'**) |
**$**GetAktDate(**Time**) |
GetAktDate(**'Server', 'Time'**) |
**$**GetAktDate(**Server, Time**) |
Folgende Operatoren können verwendet werden
1. Vergleichs-Operatoren
- and:
- ( a ) and ( b )
- a und b müssen Wahr sein
( «SollBetLW1» = «HabenBetLW1» ) and ( «SollBetLW2» = «HabenBetLW2» )
- or:
- ( a ) or ( b )
- a oder b muss Wahr sein
( «SollBetLW1» = «HabenBetLW1» ) or ( «SollBetLW2» = «HabenBetLW2» )
- <>:
- ( a ) <> ( b )
- Wenn a sich von b unterscheidet ist das Ergebnis Wahr
«AdrNr» <> '10000'
2. Verneinungs-Operator (Negation)
- not:
**not ( a )**
- a muss FALSCH sein, um als Ergebnis Wahr zu erhalten
**not ( «SollBetLW1» = «HabenBetLW1» )**
- SollBetLW1 und HabenBetLW1 müssen sich unterscheiden, um als Ergebnis Wahr zu erhalten
3. Mengen-Operator
- in:
**( a in ( b ) )**
- ( Wert in ( Werte-Menge ) )
- Wenn a (Wert) in b (Werte-Menge) vorliegt ist das Ergebnis Wahr
-
**«AdrNr» in ('10000', '10001')**
- Dies ist eine absolute Definition.
- Es werden nur durch Komma Werte gefunden (durch Komma separierte Werte müssen nach jedem Komma ein Leerzeichen besitzen, damit diese ausgewertet werden können).
- Ein Bereich kann nicht mit dem Operator "in" abgefragt werden.
Tipp:
Wollen Sie einen "von - bis" Bereich, so können Sie folgende Bedingung definieren:
**Pos('100',«AdrNr»)>0**
Ein mit dieser Formel definierter Filter zeigt alle Adressen an, die '100' enthalten. (Vgl. Sie auch mit der Beschreibung der Funktion Pos() weiter unten).
Folgende Funktionen können in den Filter- bzw. in den Regelbedingungen genutzt werden
Text / String-Funktionen
ToString(\[Wert\]) oder bei Filter auch mal ToText(\[Wert\]) möglich
- Wandelt den Wert in einen String um
Left(\[String\],\[Anzahl der Zeichen\])
Left(a,n)
- Die ersten n Zeichen von dem String a werden zurückgegeben
Left('TEST',2)
- Die ersten 2 Zeichen von dem String: "TEST" werden zurückgegeben. Ergebnis: "TE"
Left(«AdrNr»,3) = '100'
- Die ersten 3 Zeichen von der String-Variable: "AdrNr (Adressnummer)" werden mit dem Wert: "100" verglichen. Das Ergebnis ist positiv, sofern die AdrNr (Adressnummer) mit einer 100 beginnt.
Right****(\[String\],\[Anzahl der Zeichen\])
Right(a,n)
- n Zeichen von rechts von dem String a werden zurückgegeben
Right('TEST',2)
- Die letzten 2 Zeichen von dem String: "TEST" werden zurückgegeben. Ergebnis: "ST"
Right(«AdrNr»,3) = '100'
- Die letzten 3 Zeichen von der String-Variable: "AdrNr (Adressnummer)" werden mit dem Wert: "100" verglichen. Das Ergebnis ist positiv, sofern die AdrNr (Adressnummer) mit einer 100 endet.
Mid(\[String\],\[Start-Position\],\[Anzahl der Zeichen\])
Mid(a,n1,n2)
- Ab der Position n1 werden n Zeichen von dem String a zurückgegeben
Mid("TEST",2,2)
- Ab der Position 2 werden 2 Zeichen von dem String "TEST" zurückgegeben. Ergebnis: "ES"
-
Mid(«AdrNr», 3, 3) = '100'
- Ab der Position 3 werden 3 Zeichen von der String-Variable: "AdrNr (Adressnummer)" mit dem Wert: "100" verglichen
-
Beachten Sie, dass nach dem Komma jeweils ein Leerzeichen angegeben wird, ansonsten kann die Formel nicht ausgewertet werden
-
Beispiel mit oben genannter Formel: Das Ergebnis ist dann positiv, sofern die AdrNr (Adressnummer) z. B. "10100" ist, da ab Position 3 die Bedingung für 3 Zeichen wahr ist.
Pos(\[Such-String\],\[String\])
- Gibt die Position von dem gesuchten String innerhalb eines Strings zurück.
Pos("c","abc")
- Sucht "c" innerhalb von "abc" und gibt die Position zurück. Das Ergebnis ist: "3"
Beachten Sie:
Eine Pos-Funktion in einem E-Mail-Layout gibt immer den Rückgabewert "Leer" zurück, sofern der gesuchte Text nicht enthalten ist.
Sofern man eine Pos-Funktion in einer Cond - / If Bedingung verwendet, muss man einen Vorgabewert / Vergleichswert mit übergeben (als 3. Angabe). Dieser Vorgabewert wird dann zurückgegeben, sofern der gesuchte Text nicht verfügbar ist.
Beispiele:
- Allgemein:
$Cond($Pos(\[Suchwort\],\[Feld\],0)<>0,JA,NEIN)
- Vorgangsart: Angebot - Layout: Angebots-Mail - Feld: Empfänger-Formel:
$Cond($Pos("AN",«BelegNr»,0)<>0, [true@microtech.de](mailto:true@microtech.de), [false@microtech.de](mailto:false@microtech.de))
- Liefert die E-Mailadresse: "true@"
$Cond($Pos("AG",«BelegNr»,0)<>0, [true@microtech.de](mailto:true@microtech.de), [false@microtech.de](mailto:false@microtech.de))
- Liefert die E-Mailadresse:
"false@"
$Cond($Pos("AG",«BelegNr»,0)<>0, [true@microtech.de](mailto:true@microtech.de))
- Liefert keine E-Mailadresse bzw. würde dann als Empfänger-Mailadresse einfach nichts ("Leer") eintragen.
- Liefert die E-Mailadresse: "true@"
-
Length(\[String\])
: - Die Zeichenlänge eines Strings werden zurückgeliefert
Length("Ich bin ein Test!")
- Das Ergebnis liefert den Wert "17" zurück.
-
GetAktBzr():
-
Das Benutzerkürzel des aktuellen Benutzers wird zurückgeliefert
Date / Time-Funktionen
Date(\[Wert\]) oder ToDate(\[Wert\])
- Wandelt den Wert in ein Datum um
Date('01.01.80')
- Der Wert "01.01.80" kann mit einem Datumsfeld verglichen werden
Time(\[Wert\]) oder ToTime(\[Wert\])
- Wandelt den Wert in eine Uhrzeit um
Time('08:30:00')
- Der Wert "08:30:00" kann mit einen Zeitfeld verglichen werden
DateTime(\[Wert\]) oder ToDateTime(\[Wert\])
- Wandelt den Wert in ein Datum mit Uhrzeit um
DateTime('01.01.80 08:30:00')
- Der Wert "01.01.80 08:30:00" kann mit einen DatumZeitfeld verglichen werden
Year(\[Date oder DateTime\])
- Die Jahreszahl wird zurückgeliefert
Month(\[Date oder DateTime\])
- Der Monat wird zurückgeliefert
Day(\[Date oder DateTime\])
- Der Tag innerhalb des Monats wird zurückgeliefert
Hour(\[Date oder DateTime\])
- Die Stunde wird zurückgeliefert
Minute(\[Date oder DateTime\])
- Die Minute wird zurückgeliefert
Second(\[Date oder DateTime\])
- Die Sekunde wird zurückgeliefert
GetDate()
- Das aktuelle Systemdatum wird zurückgeliefert
GetAktDate()
- Das aktuelle Programmdatum wird zurückgeliefert
-
GetAktDate('Time')
- Das aktuelle Arbeitsdatum mit Uhrzeit wird zurückgeliefert.
-
GetAktDate('Server')
- Das aktuelle Serverdatum (Datum des Server-PCs) wird zurückgeliefert.
-
GetAktDate('Server, Time')
-
Das aktuelle Serverdatum mit Uhrzeit (Datum des Server-PCs) wird zurückgeliefert.
Info:
Beispiel: Über eine Formel können Sie z. B. die aktuelle Systemzeit des aktuellen Tages prüfen, ob diese größer oder gleich 11:00:00 Uhr ist und bei Zutreffen der Bedingung verschiedene Aktionen konfigurieren. So lassen sich eigene Abläufe anhand der Zeit bzw. des Datums konfigurieren.
GetAktDate('Time') >= Time('11:00:00')
-
DiffDate(\[Start-Datum\],\[End-Datum\])
- Ermittelt die Anzahl der Tage zwischen zwei Daten
- Als Rückgabewert erhält man eine ganzzahlige Anzahl der Tage.
DiffDate(1.1.2022,2.1.2022)
- Das Ergebnis ist: "1"
DiffDate(1.1.2022,1.1.2022)
- Das Ergebnis ist: "0"
DiffDate(2.1.2022,1.1.2022)
- Das Ergebnis ist: "-1"
- Beispiele:
DiffDate(«VPo.LiefDat»,GetAktdate()) > 3
- Es soll bei der Erfassung einer Vorgangsposition geprüft werden, ob das Lieferdatum der Position größer als das aktuelle Datum + 3 ist.
DiffDate(«LiefDat»,Getaktdate()) > 2
- In einer Vorgangsliste sollen nur Vorgänge ausgegeben werden deren Lieferdatum älter als 2 Tage als das aktuelle Datum sind.
- Damit lässt sich z.B. auch ein UNIX Zeitstempel berechnen.
- Beispiel für das Vorgangs-Datum in einer Tabellenansicht:
$Calc($DiffDate(01.01.1970 00:00:00,«Vog.Dat») \* 86400,Menge)
Boolean (Kennzeichen)-Funktion
ToBool(\[Wert\])
- Wandelt den Wert in ein Boolean (Ja/Nein) um
Integer / Float (Zahlen / Fließkommazahl)-Funktionen
ToInt(\[Wert\])
- Wandelt den Wert in eine Ganzzahl um
ToFloat(\[Wert\])
- Wandelt den Wert in eine Fließkommazahl um
Sonder-Funktion
CalcUmsatz(\[Anzahl der letzten Monate\])
- Berechnet den Umsatz der letzten angegebenen Monate
DBInfo-Funktion
DBInfo('Name der Datentabelle', Schlüsselwert\[e\],'Zielfeldname')
- Findet in der Datentabelle "Name der Datentabelle" den Datensatz mit dem entsprechenden "Schlüsselwert" und gibt den Inhalt des Feldes "Zielfeldname" zurück.
- Mit Hilfe der DBInfo-Formeln kann ein Wert aus einer Datentabelle unter Verwendung eines Primärindex abgefragt werden.
- Erläuterung zum Aufbau:
- Name der Datentabelle
- Name der Tabelle, aus der ein Wert abgefragt werden soll.
Schlüsselwert\[e\]
- Kann beliebigen Typs sein. Sollte jedoch zum 1. Feld des Primärindex der abzufragenden Tabelle passen.
- Zielfeldname
- Optionaler Name des Feldes, dessen Wert zurück geliefert werden soll. Falls dieser Parameter ausgelassen wird, wird dieselbe Zeichenfolge zurückgegeben mit der der Datensatz z. B. beim Löschen bezeichnet wird.
- Die DBInfo-Formel steht Ihnen auch im Feldeditor zur Verfügung. Der inhaltliche Aufbau ist wie im DBInfo-Formeln für Bereichsfilter und Ausgabefilter.
-
Beispiele:
DBInfo('Adressen',«AktVog.AdrNr»,'SteuNr')
- Dadurch wird z.B. in einer Vorgangsliste das Feld Steuernummer der Adresse abgefragt.
-
DBInfo('Vorgang', «VPo.BelegNr» , 'ReLandKennz') = 'D'
-
Mit dieser Formel wird in der Auswertung "Vorgangsliste nur Positionen" das Landeskennzeichen der Rechnungsanschrift abgefragt.