Version 11 (Geändert)
Eine Variable ist eine Speicheradresse. Sie sprechen sie mit ihrem Namen an und weisen ihr einen Wert zu.
Die einem Datenfeld zugewiesenen Werte werden auf der Festplatte gespeichert, die Werte einer Variablen werden dagegen nur für die Laufzeit im Speicher gehalten. Diese sind nicht Teil eines Datensatzes oder einer bestimmten Tabelle.
Beispiel: Sie haben zwei Datenfelder: Nettobetrag ohne MwSt. und MwSt.-Betrag. Sie benötigen nun kein drittes Datenfeld mehr, um den Bruttobetrag mit Mehrwertsteuer zu speichern. Es genügt eine Variable, in der der Brutto-Betrag immer neu berechnet wird.
Ein Variable kann von folgendem Datenfeldtyp sein:
String (*) oder Text: Alphanumerischer String bis max. 2 GB Text
Ganzzahl von -32 768 bis 32 767
Lange Ganzzahl von -2 147 483 647 bis 2 147 483 648
Zahl mit Fließkomma bis auf 15 Stellen genau
Datum von 1.1.100 bis 31.12.32767
Zeit von 00:00:00 bis 596000:00:00 (Sekunden ab Mitternacht)
Boolean: Wahr oder Falsch
Bild: Windows- oder Macintosh-Bild
BLOB (Binary Large OBject): Reihe von Bytes bis zu 2 GB Größe
Zeiger auf eine Tabelle, Datenfeld, Variable, Array oder Array-Element
(*) Im Unicode Modus sind Variablen vom Typ String oder Text identisch. Im ASCII-Kompatibilitätsmodus ist ein String eine feste alphanumerische Zeichenkette bis zu 255 Zeichen.
Sie können Variablen (außer Zeiger oder BLOB) auf dem Bildschirm darstellen, Daten darin eingeben und sie in Berichten drucken. Variablen mit eingebbarem oder nicht-eingebbarem Bereich verhalten sich wie Datenfelder. So sind auch dieselben Eingabekontrollen verfügbar:
Anzeigeformate
Datenbestätigung, wie Eingabefilter und Standardwerte
Zeichenfilter
Auswahllisten (hierarchische Listen)
Eingebbare bzw. nicht eingebbare Werte
Variablen können auch folgende Aktionen ausführen:
Schaltflächen steuern (Schaltflächen, Kontrollfelder, Optionsfelder, 3D Schaltflächen, usw.)
Schieberegler steuern (Thermometer, Lineale und Halbkreisskalen)
Listenfelder, PopUp-Menüs und Drop-down Bereiche steuern
Hierarchische Listen und hierarchische PopUp-Menüs steuern
Schaltflächenraster, Registerkarten, Bildschaltflächen, usw. steuern
Ergebnisse aus Berechungen anzeigen, die nicht gesichert werden müssen.
Variable anlegen
Sie können eine Variable einfach durch Benutzen erzeugen. Sie müssen sie nicht formal wie bei Datenfeldern anlegen. Beispiel: Für eine Variable, die das aktuelle Datum plus 30 Tage angibt, schreiben Sie:
vDate:=Current date+30
4D erstellt vDate und gibt das entsprechende Datum an. Der Code liest "vDate gibt das aktuelle Datum plus 30 Tage an". Sie können diese Variable in Ihrer Datenbank beliebig verwenden, also z.B. in einem Datenfeld vom gleichen Typ speichern:
[MyTable]MyField:=vDate
In einigen Fällen benötigen Sie Variablen, die als ganz bestimmter Typ definiert sind. Weitere Informationen zu Variablen in einer Datenbank finden Sie im Abschnitt Compiler Befehle.
Daten Variablen zuordnen
Sie können Daten in Variablen einsetzen oder herauskopieren. Im ersten Fall weisen Sie Daten einer Variablen zu. Dafür verwenden Sie den Zuordnungsoperator (:=). Mit diesem Operator weisen Sie auch Daten einem Datenfeld zu.
Schreiben Sie den Namen der zu erstellenden Variablen auf die linke Seite des Zuordnungsoperators. Die Anweisung
vNumber:=3
erstellt die Variable vNumber und setzt die Zahl 3 ein. Existiert die Variable vNumber bereits, wird nur die Zahl 3 eingetragen.
Natürlich sollten Sie aus Variablen auch Daten entnehmen können. Wieder verwenden Sie den Zuordnungsoperator. Wollen Sie den Wert von vNumber in das Datenfeld [Products]Size, einsetzen, schreiben Sie die Variable vNumber auf die rechte Seite des Zuordnungsoperators:
[Products]Size
:=vNumber
In diesem Fall ist [Products]Size gleich 3. Das Beispiel ist recht einfach, zeigt jedoch, wie diese Information über die Programmiersprache von einem Platz zu einem anderen übertragen wird.
Wichtig: Verwechseln Sie nicht den Zuordnungsoperator (:=) mit dem Vergleichsoperator (=). Zuordnen und Vergleichen sind ganz unterschiedliche Vorgänge. Weitere Informationen zu den Vergleichsoperatoren finden Sie im Abschnitt Operatoren.
Variablenarten
Der Geltungsbereich einer Variablen bestimmt die Ebene(n), in denen ihr Wert sinnvoll ist. 4D kennt drei unterschiedliche Variablen:
Lokale Variablen
Prozessvariablen
Interprozessvariablen
Lokale Variablen
Eine lokale Variable gilt nur für die Methode, in der sie benutzt wird.
Sie verwenden eine lokale Variable, um:
Konflikte mit den Namen anderer Variablen zu vermeiden
Daten vorübergehend zu nutzen
Die Anzahl der Prozessvariablen zu verringern
Der Name der lokalen Variablen beginnt immer mit einem $-Zeichen und kann bis zu 30 Zeichen lang sein. Längere Namen werden entsprechend gekürzt.
In einer Datenbank mit vielen Methoden und Variablen benötigen Sie eine Variable oft nur in der gerade benutzten Methode. Sie können eine lokale Variable in der Methode erstellen und einsetzen, ohne prüfen zu müssen, ob Sie denselben Variablennamen schon anderweitig verwendet haben.
Ein Benutzer benötigt in einer Datenbank oft nur eine ganz bestimmte Information. Das ist z.B. über den Befehl Request möglich. Dieser zeigt eine Meldung an, die der Benutzer beantworten muss. Der Befehl gibt dann die vom Benutzer eingegebene Information zurück. Diese Information muss normalerweise nicht sehr lange in der Methode verbleiben. Das ist eine typische Anwendung für eine lokale Variable. Hier ein Beispiel:
$vsID:=Request("Geben Sie Ihre Kennung ein:") If (OK=1) QUERY ([People];[People]ID =$vsID) End if
Diese Methode fordert den Benutzer auf, eine Nummer einzugeben, setzt die Antwort in eine lokale Variable, $vsID und sucht dann nach der eingegebenen Nummer. Die lokale Variable $vsID wird aus dem Speicher entfernt, sobald die Methode endet. Das ist korrekt, denn die Variable wird nur einmal und nur in dieser Methode verwendet.
Prozessvariablen
Eine Prozessvariable ist nur dem Prozess bekannt, in dem sie geschrieben wurde. Sie ist für die Prozessmethode und alle Methoden verfügbar, die von diesem Prozess aus aufgerufen werden.
Eine Prozessvariable hat kein Zeichen vor dem Namen und kann bis zu 30 Zeichen lang sein.
Im interpretierten Modus werden Variablen dynamisch verwaltet, d.h. sie werden im Speicher "on the fly" erstellt und wieder entfernt. Im kompilierten Modus teilen sich alle erstellten Prozesse (Benutzerprozesse) dieselbe Definition der Prozessvariablen, wobei jeder Prozess für jede Variable eine andere Instanz hat. So ist die Variable myVar eine Variable im Prozeß P_1 und eine andere im Prozess P_2.
Ein Prozess kann mit den Befehlen GET PROCESS VARIABLE und SET PROCESS VARIABLE Prozessvariablen aus einem anderen Prozess "peek and poke". Verwenden Sie diese Befehle beim Programmieren nur für die von 4D dafür vorgesehenen Situationen:
Interprozesskommunikation an spezifischen Stellen Ihres Codes.
Drag und Drop auf Interprozessebene anwenden
Im Client/Server-Betrieb Kommunikation zwischen Prozessen auf Client-Rechnern und Serverprozeduren auf Server-Rechnern.
Weitere Informationen finden Sie im Abschnitt Prozesse und in der Beschreibung dieser Befehle.
Interprozessvariablen
Interprozessvariablen sind allen Prozessen der Datenbank mit ihrem Wert bekannt. Sie dienen hauptsächlich zum Informationsaustausch zwischen den einzelnen Prozessen.
Ihr Name beginnt mit den Symbol <>, ein "kleiner als" Zeichen gefolgt von einem "größer als" Zeichen. Er kann bis zu 30 Zeichen lang sein.
Hinweis: Diese Syntax gilt für Windows und Macintosh. Auf Macintosh kann auch das Zeichen <> benutzt werden, dieses erhalten Sie mit der Tastenkombination Umschalt-/Wahltaste + Buchstabe v.
Im Client/Server-Betrieb greifen alle Rechner (Client und Server) auf dieselbe Definition der Interprozessvariablen zu, aber jeder Rechner hat für jede Variable eine andere Instanz.
Variablen für Formularobjekte
Im Formulareditor werden beim Benennen von aktiven ObjektenSchaltfläche, Optionsfeld, Kontrollkästchen, rollbarer Bereich usw.automatisch Variablen mit demselben Namen angelegt. Erstellen Sie z.B. eine Schaltfläche mit dem Namen MyButton, wird eine Variable mit Namen MyButton angelegt. Verwechseln Sie bitte nicht den Namen der Schaltfläche mit deren Inhalt.
Mit Variablen für Formularobjekte steuern und verwalten Sie die Objekte. Wurde z.B. die Schaltfläche angeklickt, wird die dazugehörige Variable auf 1 gesetzt; ansonsten hat sie den Wert 0. Über eine einem Thermometer zugeordnete Variable können Sie die aktuellen Einstellungen ablesen und ändern. Ziehen Sie z.B. ein Thermometer auf eine neue Einstellung, ändert sich der Wert der Variablen, um die neue Einstellung anzuzeigen. Genauso wird, wenn eine Methode den Wert der Variablen ändert, das Thermometer neu gezeichnet, um den neuen Wert anzuzeigen.
Weitere Informationen zu Variablen und Formularen finden Sie im Handbuch 4D Designmodus und im Abschnitt Formularereignisse.
Systemvariablen
Einige Variablen legt 4D selbst an. Sie dürfen nicht neu definiert oder neu typisiert werden. Sie sind beim ersten Öffnen der Datenbank noch nicht angelegt. Sie werden erst beim ersten Aufruf der Aktion, die die Variable erzeugt, von 4D definiert.
Die wichtigste Systemvariable ist OK. Diese Variable aktualisiert 4D laufend. Mit ihr fragen Sie ab, ob eine Eingabe bestätigt oder abgebrochen wurde, also ob der Datensatz gesichert wurde oder ob der Importvorgang abgeschlossen wurde. Wurde ein Vorgang erfolgreich abgeschlossen, hat die Systemvariable OK den Wert 1, ansonsten den Wert 0.
Weitere Informationen über Systemvariablen finden Sie im Abschnitt Systemvariablen.
Referenz
Ablaufsteuerung, Datentypen, Einführung in Arrays, Konstanten, Konventionen, Methoden, Operatoren, Zeiger.