4D-Befehle und Funktionen
4D-Befehle und Funktionen
Die folgende Auflistung ist unvollständig. Bei der Schreibung der Befehle und Funktionen müssen Sie die Leerzeichen beachten, nicht aber Groß/Kleinschreibung. In der Auflistung sind Befehle komplett GROSS geschrieben, Funktionen, die einen Wert zurückliefern, jedoch nur mit großem Anfangsbuchstaben.
Besitzt ein Befehl oder eine Funktion mehrere Argumente, so werden diese mit einem Semikolon ; getrennt.
+
Der +-Operator dient nicht nur zur Addition von Zahlen, sondern auch dazu, Zeichenketten zu verknüpfen. Beispiel:
Zeichen2:=”R-”+[Dokumente]Auftragsnr
Steht in [Dokumente]Auftragsnr der Wert “A2002117”, so hat die Variable Zeichen2 hinterher den Wert “R-A2002117”
Abs
Syntax: PositivZahl:=Abs(Zahl)
Abs liefert den Absolutwert einer Zahl zurück.
Char
Syntax: String:=Char(Zahl)
Char liefert das Zeichen zu dem übergebenen ASCII-Code. Beispiele:
Char(32) ist ein Leerzeichen
Char(13) ist ein Zeilenvorschub, erzwingt also eine neue Zeile.
Current date
Syntax: DatumsVar:=Current date
Current date liefert ein Datum zurück, d.h. es handelt sich um den Spezialfall einer Zahl. Ein Datum kann mit String(Datum) in eine Zeichenkette konvertiert werden. Eine Datumsvariable wird so initialisiert:
DatumsVar:=!00.00.00!
Current time
Syntax: TimeVar:=Current time
Eine Zeitvariable ist relativ unhandlich - sie können Sie aber natürlich drucken.
Current User / USRGRP_CurrentUser
Syntax pf7: tempBenutzer:=Current User
Syntax pf2010: tempBenutzer:=USRGRP_CurrentUser
Gibt den Benutzernamen des aktuell angemeldeten Benutzers zurück.
Verwendbar z.B. im Formular um den Benutzer auszuweisen, der das Dokument tatsächlich gedruckt hat:
Query([Personal];[Personal]Username=USRGRP_CurrentUser)
tempBenutzer:=[Personal]Name2+" "+[Personal]Name1
Year of
Syntax: Zahl:=Year of(Datum)
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «Year of» den Wert 2009.
Month of
Syntax: Zahl:=Month of(Datum)
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «Month of» den Wert 1.
Day of
Syntax: Zahl:=Day of(Datum)
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «Day of» den Wert 25.
Week of
Die Funktion "Week of" gibt es selber gar nicht, dafür aber eine entsprechende Methode:
Syntax: String:='''tool_date_getweek(Datum)'''
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «tool_date_getweek» den Wert 200904.
In Verbindung mit «Substring» (s.u.) kann somit die reine KW ausgegeben werden:
Syntax: String:=Sustring(tool_date_getweek(Datum);5)
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «Sustring(tool_date_getweek(Datum);5)» den Wert 04.
KalenderWoche
Die Funktion "KalenderWoche" gibt direkt die Kalenderwoche als String zurück.
Syntax: String:=KalenderWoche(Datum)
Wenn «Datum» den Wert !25.1.2009! besitzt, dann liefert «KalenderWoche» den Wert 4.
Berechnen von Tagen zwischen 2 Datumsangaben
Datumsangaben können voneinander subtrahiert werden, das Ergebnis ist die Anzahl der Tage.
Syntax: Zahl:=DatumBis-DatumVon bzw. beispielhaft Zahl:=[Auftrag]Fixtermin-Current Date
Wenn «DatumBis» den Wert !21.2.2009! und «DatumVon» den Wert !25.1.2009! besitzt, dann liefert «DatumBis-DatumVon» den Wert 27.
Length
Syntax: Zahl:=Length(String)
Length(“Hallo Welt!”) ist 11 - Leerzeichen und Sonderzeichen werden mitgezählt.
Lowercase
Syntax: StringNeu:=Lowercase(StringAlt)
Beispiel: Lowercase(“Hallo Welt!”) ergibt “hallo welt!”.
Uppercase
Syntax: StringNeu:=Uppercase(StringAlt)
Beispiel: Uppercase(“Hallo Welt!”) ergibt “HALLO WELT!”.
Num
Syntax: Zahl:=Num(String)
Num wandelt eine Zeichenkette, die eine Zahl enthält, in eine Zahl um. Enthält die Zeichenkette auch Buchstaben, werden diese ignoriert. Beispiel:
Num(“A1B2C34”) ergibt die Zahl 1234.
Num(“12E2”) ergibt 1200.
Der Buchstabe “E” wird als Exponent zur Basis 10 interpretiert. Dezimaltrenner werden in Abhängigkeit von den im System eingestellten Trennern interpretiert, in Deutschland also das Komma, in der Schweiz der Dezimalpunkt.
String
Syntax: Zeichenkette:=String(Zahl;Format). Format ist optional.
String wandelt eine Zahl oder ein Datum in eine Zeichenkette um. Geben Sie noch ein Format mit an, so wird die Zahl speziell formatiert. Beispiel:
String(1000;”#.##0,00”) ergibt “1.000,00”
String(345590;”######”) ergibt “34-55-90”
String(13,23) ergibt “13,23”
String(13,23;”##0”) ergibt “13”!
Formatierung vom Datum
Ist das Feld vom Typ Datum, erhalten Sie als Zeichenkette das vom Betriebssystem definierte Standardformat. Sie können aber auch ein anderes Format übergeben:
Syntax: Zeichenkette:=String(Datum;Format)
- String(Current Date;Internal date abbreviated) ergibt 29. Dez. 2006
- 'Internal date long' ergibt 29. Dezember 2006
- 'Internal date short' ergibt 29.12.2006
- 'Internal date short special' ergibt 29.12.06 (aber 29.12.1896 oder 29.12.2096)
- 'ISO Date' ergibt 2006-29-12T00:00:00
- 'System date abbreviated' ergibt So, 29. Dez. 2006
- 'System date long' ergibt Sonntag, 29. Dezember 2006
- 'System date short' ergibt 29.12.2006
- 'Blank if null date' ergibt 100 "" statt 0
ORDER BY
Syntax: ORDER BY(Dateiname;Feld1;<|>;Feld2;<|>;...)
Der Befehl ORDER BY sortiert die aktuelle Auswahl von Datensätzen der bestimmten Datei nach den festgelegten Feldern. Für jedes Feld kann separat bestimmt werden, ob es aufsteigend (<) oder absteigend (>) sortiert wird.
Beispiele:
- ORDER BY([Stückliste];[Stückliste]Auftragsnr;<;[Stückliste]Positionsnr;<;[Stückliste]Sortnum;<)'''
- Das Feld «Sortnum» der Datei «Stückliste» stellt sicher, daß auch bei mehrstufigen Stücklisten auf alle Fälle die richtige Sortierreihenfolge eingehalten wird.
- ORDER BY ([Dokumente];[Dokumente]DokPositionsNr;>)
- Im normalen Rechnungsformular kann man durch einfügen dieser Zeile im StartScript die Standard-Sortierung nach Positionen in die Sotierung bezogen auf die DokumentenNr. ändern
QUERY
Syntax - Einzelvariante: QUERY([Datei];[Datei]Feld=Suchwert)
Syntax - Mehrfachsuche: QUERY([Datei];[Datei]Feld1=Suchwert1;*)
QUERY([Datei];&[Datei]Feld2=Suchwert2;*)
QUERY([Datei];&[Datei]Feld3=Suchwert3)
Mit diesem Befehl können Sie in einer Datei nach Datensätzen suchen, die den angegebenen Suchkriterien genügen. Neben “=” können auch Operatoren wie “<“, “>”, “<=”, “>=” und “#” verwendet werden. “#” steht für “Ungleich”
Position
Syntax: Zahl:=Position(Suchtext; UrsprungString)
Diese Funktion liefert die Position des Suchtexts in der Zeichenkette UrsprungString zurück. Das erste Zeichen in einer Zeichenkette hat die Position 1. Wird der Suchtext nicht gefunden, so wird die Zahl Null zurückgeliefert. Beispiel:
Position(“er”;”SuperReport”) liefert die Zahl 4 zurück.
Substring
Syntax: Zeichen1:=Substring(UrsprungString;Position{;Länge})
Diese Funktion liefert einen Teilstring des UrsprungString zurück. Der Teilstring wird ab Position zurückgeliefert, optional kann die Länge des Teilstrings angegeben werden. Wird die Länge nicht angegeben, so wird der Teilstring bis zum Ende des UrsprungString zurückgegeben. Beispiele:
Substring(“Hallo”;2) liefert “allo” zurück.
Substring(“Hallo”;2;2) liefert “al” zurück.
Records in selection
Syntax: Zahl:=Records in selection([Dateiname])
Diese Funktion liefert zurück, wieviele Datensätze in der aktuellen Auswahl der übergebenen Datei vorhanden sind. Sie nutzen diese Funktion nach Durchführung von QUERY, um zu ermitteln, ob die Suche erfolgreich war. Beispiel:
Zahl1:=Records in selection([Kunden])
Round
Syntax: Zahl:=Round(Zahl;AnzahlStellen)
Diese Funktion rundet die übergebene Zahl kaufmännisch auf die übergebene Anzahl Stellen. Beispiel:
Round(45,25;1) liefert 45,3 zurück
Round(45,24,1) liefert 45,2 zurück.
Size of array
Syntax: Zahl:=Size of array(ArrayVariable)
Diese Funktion liefert die Anzahl der Elemente der übergebenen Arrayvariablien zurück. Diese Funktion kann man nutzen, um zu ermitteln, ob beispielsweise aktuell eine Schlussrechnung oder eine normale Rechnung gedruckt wird. Beispiel:
Size of array(TRechNum) liefert eine Zahl größer Null zurück, wenn eine Schlussrechnung gedruckt wird.