Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 11:53
Hallo Holger,

du möchtest ein Integer-Feld als Boolean-Feld interpretieren und dabei den Wert 1 als True interpretieren, alle anderen Werte als False. Es ist kein Problem eine entsprechende Abbildungsfunktion anzugeben:

Delphi-Quellcode:
function AsBoolean(f: TField): Boolean;
begin
  Result := f.AsInteger = 1;
end;
Das eigentliche Problem besteht darin, dass die DBCheckBox nicht auf den Integer-Wert zugreift, sondern direkt auf das Feld und dadurch auch mit dem Wert Null (gleichbedeutend mit "undefined value") umgehen muss. Deshalb gibt es hier eine dreiwertige Logik und intern ist festgelegt, dass Field.IsNull den dritten Wert repräsentiert, dessen Visualisierung du beschrieben, aber falsch interpretiert hast.

Am besten wäre es, wenn du den Definitionsbereich ändern könntest, d.h. NULL. Zuvor könntest du alle NULL-Werte durch 0 ersetzen und anschließend auch noch ein Default-Constraint einführen, damit sich keine NULL-Werte mehr einschleichen.

Wenn du nur lesend zugreifst und die Tabelle auch nicht verändern darfst, dann kannst du dir auch mit einer View und der Funktion Coalesce(?) behelfen.

Grüße vom marabu
  Mit Zitat antworten Zitat