4D v16.34D Datenfeldtypen |
|||||||||||||||||||||||||
|
4D v16.3
4D Datenfeldtypen
4D Datenfeldtypen
Sie müssen für jedes Datenfeld einen Feldtypen festlegen. Der Feldtyp bestimmt, wie 4D die Daten in einem Feld bearbeitet und speichert und wie Sie Daten in Formularen eingeben oder anzeigen. Um einen Feldtypen zu ändern:
Sie können den Typ des Datenfeldes jederzeit ändern, außer das Feld hat eine Verknüpfung oder gehört zu einem Hauptschlüssel. In diesem Fall ist das Menü zum Auswählen eines Feldtyps deaktiviert. Sie müssen die Verknüpfung oder den Hauptschlüssel explizit entfernen, bevor Sie den Typ ändern können. 4D unterstützt folgende Feldtypen:
(1) Achtung: Nur die SQL Engine von 4D verwendet diese Feldtypen. Bei Verwendung in der 4D Programmiersprache werden ihre Werte intern in den Typ Zahl umgewandelt. Hinweis: Der generische Begriff "String" gibt den Typ Alpha oder Text an, "Zahl" gibt den Typ Ganzzahl, Lange Ganzzahl, Ganzzahl 64 Bit, Zahl oder Fließkomma an. Ein Alpha-Feld enthält alphanumerische Zeichen, d.h. Buchstaben und Zahlen, Interpunktionszeichen und besondere Zeichen wie z.B. Stern *, Prozentzeichen %, Bindestrich -, usw. Benutzen Sie ein Alpha-Feld für jede Information, die man als Text ansehen kann, mit einer max. Länge von 255 Zeichen. Postleitzahlen werden aus zwei Gründen am besten in ein Alpha-Feld eingegeben: In numerischen Datenfeldern wird eine Null am Anfang nicht angezeigt und einige Postleitzahlen in Verbindung mit einem Auslandskennzeichen enthalten einen Bindestrich. Beim Abwägen zwischen einem numerischen oder einem alphanumerischen Datenfeld sollte in der Regel ein alphanumerisches Datenfeld gewählt werden, außer es wird für numerische Berechnungen verwendet oder für eine Suche oder Sortierung, die auf numerischen Werten basiert. Sie können die Maximallänge eines Alpha-Feldes zwischen 1 und 255 Zeichen festlegen. Sie können zwei oder mehr Alpha-Felder miteinander verketten. Sie möchten z.B. den Vornamen und Nachnamen einer Person für ein Etikettenformular zusammensetzen. Hierzu verwenden Sie folgende Einzeilen-Methode: VollerName:=[Angestellte]VorName+" "+[Angestellte)NachName Die Variable VollerName kann angezeigt oder gedruckt werden. Sie können auch einen Teil der Information herausziehen, um ihn an anderer Stelle zu benutzen, z.B. Teil einer Zeichenkette. Die Teilmenge kann ebenfalls angezeigt oder gedruckt werden. Ein Textfeld ist ähnlich zum Alpha Feld, bis auf kleine Unterschiede. Ein Textfeld kann bis zu 2 GB alphanumerische Zeichen enthalten. Im allgemeinen benutzen Sie ein Textfeld für umfangreiche Textblöcke, wie z.B. Kommentare oder Beschreibungen. Aus Optimierungsgründen lässt sich der Inhalt eines Textfeldes außerhalb der Datensätze speichern (siehe Abschnitt “Im Datensatz speichern” unter Feldeigenschaften). In diesem Fall kann dem Textfeld kein Standardindex zugewiesen werden, ein Index mit Schlüsselwörtern ist jedoch möglich. Weitere Informationen dazu finden Sie im Abschnitt Indizes erstellen und ändern. In einem Eingabeformular können Sie einem Textfeld Bildlaufleisten hinzufügen. In einem gedruckten Bericht kann ein Textfeld bei Bedarf erweitert werden, um alle Informationen zu drucken, auch wenn diese sich über mehrere Seiten erstrecken. Bei einer Texteingabe sind die gängigen Funktionen der Textverarbeitung verfügbar: Sie können blättern, Zeilenumbruch im Anzeigebereich des Datenfeldes, doppelklicken, um ein Wort zu wählen, die Einfügemarke mit den Pfeiltasten verschieben und die Standardoperationen Ausschneiden, Kopieren und Einfügen ausführen. Hat ein Textfeld die Eigenschaft mehrzeilig, ist bei der Dateneingabe die Zeilenschaltung für neue Absätze erlaubt. Für ein Alpha-Feld ist das nicht möglich. Ist die Option Mehrfachstil zugewiesen, kann das Feld Text mit Formatierung enthalten, z.B. Wörter in Fettschrift, unterstrichen oder farbig. Sie können Text in Textfelder einfügen, einschließlich Texte von Textverarbeitungsprogrammen. Hinweis: Eine andere Möglichkeit zum Speichern und Bearbeiten von Text in einem Datensatz ist das Plug-In 4D Write. Damit können Sie verschiedene Schrifteigenschaften zuweisen, Absätze formatieren und andere Möglichkeiten der Textverarbeitung einsetzen, die Ihnen in normalen Textfeldern nicht zur Verfügung stehen. Dazu muss, wie für 4D Plug-Ins üblich, der 4D Write Bereich in ein Feld vom Typ BLOB gesetzt werden — und nicht vom Typ Text. Weitere Informationen dazu finden Sie z.B. im Abschnitt WR Einführung im Handbuch 4D Write Programmiersprache. Diesen Feldtyp verwenden Sie zum Speichern von Datumswerten, wie z.B. Startdatum, Verkaufsdatum, Geburtstage usw.. Ein Datumsfeld kann jeden Datumswert, d.h. Tage, Monate, Jahre im Format DD/MM/JJJJ speichern, und zwar zwischen dem Jahr 100 und dem Jahr 32 767. Hinweis: In den USA erfolgen Datumsangaben im Format Monat/Tag/Jahr, d.h. MM/DD/JJJJ. Andere Länder verwenden andere Formate, wie z.B. DD/MM/JJJJ im deutschen System und JJ/MM/DD im schwedischen System. Die Daten werden in dem Format angezeigt, das Sie im Betriebssystem Ihres Rechners festgelegt haben. Ein Zeitfeld benutzen Sie zum Verwalten von Zeiten, wie z.B. Aktuelle Zeit, Besprechungszeit, Berechnete Zeit usw.. Ein Zeitfeld speichert jeden Zeitwert, der im Format HH:MM:SS eingegeben wird. Boolean-Felder werden manchmal als logische Datenfelder bezeichnet und enthalten die Werte WAHR und FALSCH. Sie können ein Boolean-Feld entweder als ein Kontrollkästchen formatieren oder als ein Paar von Optionsfeldern. Ein markiertes Kontrollkästchen hat den Wert WAHR; deaktiviert ist dieser Wert FALSCH. Es wird entweder das erste Optionsfeld gewählt, dieses ist WAHR, oder das zweite, dieses ist FALSCH. Sie sollten ein Boolean-Feld so bezeichnen, dass Sie die Frage stellen können: "Ist der Feldname wahr?" Diese Frage ist für eine Suche sinnvoll, weil 4D bei einer Suche nach WAHR- und FALSCH-Werten in einem Boolean-Feld sucht. Sie bezeichnen z.B. ein Feld mit "Männlich" anstatt mit "Geschlecht". Ihre Suchbedingung heißt dann "Männlich entspricht Wahr", anstatt "Geschlecht entspricht Wahr". Diesen Feldtyp verwenden Sie für jedes Datenfeld, das ganze Zahlen speichert, d.h. Zahlen ohne Dezimalstellen, wie Datensatznummern, Rechnungsnummern usw.. Ganzzahlfelder können Zahlen von - 32 768 bis + 32 767 (216)enthalten. Diesen Feldtyp verwenden Sie für jedes Datenfeld, das ganze Zahlen speichert, die für ein Ganzzahlfeld zu groß sind. Diese Datenfelder enthalten ganze Zahlen, also ohne Dezimalstellen zwischen +/- 2.147.483.647 (232). Diesen Feldtyp verwenden Sie zum Speichern von Ganzzahlen mit 8 Bytes. Damit können Sie sehr große Zahlen im Bereich +/- 2 64 speichern. Hinweis: Beachten Sie, dass nur die SQL Engine von 4D die beiden Feldtypen Ganzzahl 64 bits und Fließkomma verwendet. Bei Verwendung in der 4D Programmiersprache werden sie intern in Werte vom Typ Zahl umgewandelt. Ein Feld vom Typ Zahl speichert Zahlen, d.h. Dezimalzahlen, wie Preise, Monatseinkommen, Kosten usw.. Felder vom Typ Zahle enthalten beliebige Zahlen im Bereich ±1.7E±308. Hinweis: In der 4D Datenbank Engine werden Vergleiche vom Typ Zahl immer mit einem epsilon Wert von 10^-6 ausgeführt, um ausreichende Genauigkeit zu erhalten. Um die Konsistenz von Daten und Berechnungen sicherzustellen, lässt sich dieser epsilon Wert nicht verändern, d.h. die Datenbank Engine berücksichtigt nicht den Befehl SET REAL COMPARISON LEVEL. Er wird nur bei Bearbeitungen angewandt, die in der 4D Programmiersprache ausgeführt werden. Beachten Sie, dass Daten vom Typ Zahl nicht geeignet sind zum Speichern bzw. Berechnen von Werten mit einer großen Anzahl signifikanter Stellen, wie z.B. Seriennummern oder astronomische Messungen, da deren Genauigkeit von Natur aus begrenzt ist. Diesen Feldtyp verwenden Sie zum Speichern von Fließkommazahlen. Das sind Werte ohne Verlust der Genauigkeit. Hinweis: Beachten Sie, dass nur die SQL Engine von 4D diesen Feldtyp verwendet. Bei Verwendung in der 4D Programmiersprache werden sie intern in Werte vom Typ Zahl umgewandelt. Datenfelder für Blobs, d.h. Binary Large Object, oder Große Binäre Objekte speichern binäre Objekte jeder Art. Sie können z.B. Unterlagen speichern, die mit anderen Anwendungen erstellt wurden, gescannte Bilder oder andere Anwendungen. Ein Blob kann bis zu 2 Gigabyte Größe haben. Wenn Sie an einem Datensatz arbeiten, der ein Blob-Feld enthält, wird das gesamte Blob in den Speicher geladen. Sie können ein Blob-Feld auch benutzen, um ein ganzes Dokument in Ihrer Datenbank zu speichern. Sie können den Inhalt eines Blob-Feldes in ein Dokument schreiben. Sie können z.B. ein Blob-Feld in einem Verwaltungssystem für Dokumente benutzen, welches Dokumente in der Datenbank speichert und diese auf Anfrage Benutzern zur Verfügung stellt. Bildfelder werden benutzt, um digitalisierte Fotos, Diagramme, Karten und mit grafischen Anwendungen erstellte Illustrationen zu speichern. Die Bilder bleiben in ihrem nativen Format erhalten. Einige grafische Anwendungen speichern zu Bildern zusätzliche Informationen mit Hinweisen für Ausgabegeräte wie z.B. einen PostScriptTM Drucker, oder ab Version 12 Metadaten. Diese Information wird mitgeliefert, wenn das Bild kopiert oder in ein Bildfeld eingefügt wird. 4D verwendet diese Angaben zum Drucken des Bildes auf einem passenden Ausgabegerät oder bei Metadaten über die Befehle GET PICTURE METADATA und SET PICTURE METADATA. Zur Optimierung wird der Inhalt vom Bildfeldern außerhalb der Datensätze gespeichert. Bilder werden nur bei Bedarf geladen, z.B. wenn der Datensatz mit dem Bildfeld bei einer Suche gefunden wird. Ab Version 13 können Sie Bilder auch außerhalb der Datendatei speichern. Weitere Informationen dazu finden Sie im Abschnitt Daten extern speichern. 4D kann jetzt für jedes Bild, das einem Datenfeld zugeordnet ist, einen Standardnamen speichern. Folglich können Sie einen standardmäßigen Dateinamen setzen, wenn Sie den Inhalt eines Datenfeldes vom Typ Bild auf die Festplatte schreiben, und zwar durch Export eines Benutzers oder über den Befehl WRITE PICTURE FILE, wenn Sie im Parameter DateiName einen leeren String übergeben. Wird der Inhalt des Feldes in eine Variable oder in ein anderes Feld kopiert, wird der Standardname ebenfalls kopiert.. Es gibt zwei Möglichkeiten, einem Bild, das in einem Datenfeld vom Typ Bild gespeichert ist, einen Standardnamen zuzuweisen:
Sehen Sie hierzu folgendes Beispiel::
4D Objektfelder speichern verschiedene Arten von Eigenschaft/Wert Paaren ohne vordefiniertes Datenschema. Die gespeicherte Datenstruktur zwischen verschiedenen Datensätzen ist nicht zwingend dieselbe. So kann z.B. ein Objektfeld [Person]Adresse je nach Stadt, Land, etc. verschiedene Eigenschaften haben: record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners", "state":"MD",...} record2= {"street1":"Umber Road", "Number":"28", "state":"MO",...} Die Struktur von 4D Objekten basiert auf dem klassischen Prinzip von "Eigenschaft/Wert" Paaren. Die Syntax dieser Objekte basiert auf JSON Notation, folgt ihr aber nicht komplett.
Warnung: Beachten Sie, dass Namen von Eigenschaften zwischen Klein- und Großschreibung unterscheiden. Ein Objektfeld kann bis zu 2 Gigabyte groß sein. Arbeiten Sie mit einem Datensatz, der ein Objektfeld enthält, wird das gesamte Objekt in den Speicher geladen. Objektfelder lassen sich wie Felder vom Typ Text, Bild oder BLOB in der Datendatei speichern (innerhalb oder außerhalb des Datensatzes) oder außerhalb der Datendatei; weitere Informationen dazu finden Sie im Abschnitt Daten extern speichern section. Sie verwenden Befehle aus dem Kapitel Objekte (Sprache) zum Verwalten von Objektfeldern. Mit den Befehlen OB Get und OB SET lesen Sie Daten aus und schreiben Daten in Objektfelder. Über die Befehle OB SET ARRAY und OB GET ARRAY können Sie Arrays auch als Eigenschaften speichern und lesen. Mit spezifischen Befehlen wie QUERY BY ATTRIBUTE, QUERY SELECTION BY ATTRIBUTE, DISTINCT ATTRIBUTE VALUES oder DISTINCT ATTRIBUTE PATHS können Sie Suchen und Bearbeitungen in Objektfeldern ausführen. Da Objektfelder auf Text basieren, wird der Inhalt eines Objektfeldes in einem 4D Formular standardmäßig als Text angezeigt und in JSON formatiert (siehe nächster Abschnitt). Hinweis: Zum Arbeiten mit JSON Objekten müssen Sie die Befehle im Kapitel JSON verwenden. Mit Datenfeldern vom Typ Objekt lassen sich dynamische Felder ohne Schema definieren, d.h. sie sind sozusagen benutzerdefinierte bzw. eigene Felder. In 4D haben Sie die Wahl zwischen einem Datenmodell mit oder ohne Schema. Beide Fälle erlauben rasche indizierte Suchen. Darüberhinaus können Objektfelder standardmäßige Datenmodelle vereinfachen. So sorgt z.B. ein Objektfeld in einer klassischen Tabelle "Kontakte" dafür, dass nicht dutzende Felder mit allen möglichen Werten angelegt werden - und in 90% der Fälle meist unbenutzt bleiben. Das Informationsmodell wird von Fall zu Fall on-the-fly erstellt. Alle Befehle im Kapitel Objekte (Sprache) akzeptieren jetzt als ersten Parameter ein Objektfeld (Objekt). Werte von Objektfeldern werden wie standardmäßige Objekte der Programmiersprache über Befehle aus dem Kapitel Objekte (Sprache) verwaltet. Zum Beispiel: // Um einen Wert zu setzen Arrays werden ebenfalls unterstützt, zum Beispiel: ARRAY TEXT($arrGirls;3) Um Änderungen an Attributen eines Objektfelds zu sichern, müssen Sie die Änderung in den meisten Fällen 4D vor dem Sichern des Datensatzes explizit mitteilen. Dazu weisen Sie das Objektfeld erneut sich selbst zu: [Persons]Identity_OB:=[Persons]Identity_OB //Updaten des Feldinhalts erzwingen Dieser Schritt ist notwendig, da eine Objektreferenz an verschiedenen Stellen in der Anwendung und auch in anderen Objektfeldern verwendet werden kann. Beim Sichern des Datensatzes kann die 4D Programmiersprache nicht erkennen, ob ein Attribut des Objektfeldes geändert wurde. In folgenden Fällen müssen Sie das Feld explizit neu zuweisen, um eine Änderung des Attributs direkt zu sichern:
Hinweis: Die erneute Zuweisung entfällt, wenn Attribute, die auf der ersten Ebene liegen, mit dem Befehl OB SET bearbeitet werden: OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue") //Auf Attribute auf der ersten Ebene zugreifen Objektfelder lassen sich in Formeln verwenden. Dazu verwenden Sie den standardmäßigen Formeleditor oder den Befehl EXECUTE FORMULA. In diesem Kontext lassen sich Objektfelder dann aber nur über folgende Funktionen verwalten: Sie können z.B. folgende Suchformel ausführen: OB Get([Rect]Desc;"color")="blue" Objektfelder werden standardmäßig als Textfelder in 4D Formularen angezeigt. In diesen Bereichen müssen Objektdaten entweder undefiniert oder als JSON Text definiert sein, andernfalls wird ein Fehler zurückgegeben. Haben Sie z.B. das Feld [Rect]Desc als Objektfeld definiert, können Sie schreiben: CREATE RECORD([Rect]) Wird das [Rect]Desc Feld in Ihr Formular eingebunden, erscheint folgender Inhalt: Sie können angezeigte Werte direkt im Textfeld anzeigen oder Objektdaten direkt mit der standardmäßigen Objekt Notation eingeben. Drücken Sie die Tabulatortaste, werden sie direkt in JSON formatiert: Machen Sie direkte Eingaben jedoch mit Bedacht, da fehlende oder falsch gesetzte Zeichen in JSON zu einem Fehler beim Parsen führt und die bearbeiteten Daten nicht gesichert werden: Es ist in der Regel präziser, Inhalt von Objektfeldern über Befehle der Kapitel Objekte (Sprache) und JSON zu verwalten. Die meisten der standardmäßigen 4D Funktionalitäten unterstützen Objektfelder genauso wie andere Datentypen. Einige fortgeschrittene Bereiche des Programms sind dagegen im aktuellen Release noch nicht für Objektfelder verfügbar. Diese Bereiche werden schrittweise erweitert und sind dann in kommenden Releases auch für Objektfelder verfügbar. Folgende Features oder Befehle unterstützen Objektfelder teilweise über 4D Formeln:
Folgende 4D Features bzw. Befehle unterstützen Objektfelder nicht:
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
Geändert: 4D v15 ARTIKELVERWENDUNG
4D Designmodus ( 4D v16) |
|||||||||||||||||||||||