Programmieren mit dBASE PLUS: autoNullFields

Aus Wikibooks


Bestimmt ob leeren Feldern ein Nullwert zugewiesen werden, oder wenn anwendbar, sie mit Leerzeichen, Null oder false gefüllt werden.

Eigenschaft von[Bearbeiten]

Rowset

Beschreibung[Bearbeiten]

Wenn die rowset Eigenschaft autoNullFields auf true gesetzt ist (Standardeinstellung), werden leere Felder mit NULL vorbelegt.

„NULL“ ausgesprochen „NALL“ ist nicht zu verwechseln mit dem numerischen Wert Null. „NULL“ bedeutet „LEER“, undefiniert oder nicht existent. Einem Feld das mit „NULL“ gefüllt ist, ist deshalb unterschiedlich zu einem Feld, das mit der numerischen Wert Null oder Leerzeichen gefüllt ist. Auch bei den logischen Feldern muss man unterscheiden zwischen True, False oder „NULL“.

Wenn die rowset Eigenschaft autoNullFields auf false gesetzt ist, werden numerischen Feldern (long, float, etc.) ein Wert von Null (0) zugewiesen, logische Felder erhalten den Wert „false“, und Zeichenfelder werden mit Leerzeichen gefüllt.

Enthält ein Feld „Null“ kann man sich dies mit: „es wurden noch keine Daten eingegeben“, vorstellen.

Bei der Berechnung verschiedener numerischer Werte, wie z.B. den Durchschnitt eines Betrages, werden sinnvollerweise Felder, die mit „NULL“ belegt sind ignoriert.

Zur Veranschaulichung: Nehmen wir an Sie haben eine Tabelle mit drei Datensätzen mit einem Betragsfeld die wie folgt belegt sind:

  • Datensatz 1: Betrag = 20,00
  • Datensatz 2: Betrag = NULL
  • Datensatz 3: Betrag = 10,00

Der durchschnittliche Betrag ist: 15,00. Wären Die Datensätze aber mit

  • Datensatz 1: Betrag = 20,00
  • Datensatz 2: Betrag = 0,00
  • Datensatz 3: Betrag = 10,00

belegt, wäre der durchschnittliche Betrag 10,00.

Setzen Sie autoNullFields nicht auf false, wenn Sie mit lookupSQL oder mit lookupRowset arbeiten und das Nachschlagefeld aus einen numerischen Feldtyp hat. Sie erhalten dann beim beginAppend() die Fehlermeldung, dass der erforderliche Typ Zeichen verlangt wird.

In diesem Fall ist autoNullFields = true zu setzen und die Werte, die als Vorgabewerte in die einzelnen Felder kommen sollen, im Event onAppend einzusetzen.