Document toolboxDocument toolbox

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.