AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBCheckBox.Unchecked = NULL
Thema durchsuchen
Ansicht
Themen-Optionen

DBCheckBox.Unchecked = NULL

Ein Thema von HolgerCW · begonnen am 19. Jul 2007 · letzter Beitrag vom 20. Jul 2007
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 09:54
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
Hallo zusammen,

ich habe in meiner Datenbank eine Spalte als nummerisches Feld deklariert. Entweder steht da eine 1 oder NULL drin. Wie kann ich das jetzt mit der DBCheckBox behandeln ?

Bei checked gebe ich 1 ein und bei Unchecked NULL, aber trotzdem graut er mir die DBChecked - Box aus, wenn ein Wert in der DB NULL ist. Was muss ich da als Wert angeben ?

Gruss

Holger

P.S.: Lass ich Unchecked leer, habe ich das gleiche Problem ...
  Mit Zitat antworten Zitat
pmoegenb

Registriert seit: 24. Aug 2006
Ort: Aidlingen
155 Beiträge
 
Delphi XE6 Professional
 
#2

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 10:07
Hallo Holger,

probiers mal mit 0. NULL ist weder 0 noch 1, oder weder true noch false.
Peter Mögenburg
Gruß

Peter
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 10:07
Wie wärs hiermit :

Delphi-Quellcode:
if IsNull then
  DBCheckbox.checked := false;
Gruß
Hansa
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#4

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 11:19
In welches Ereignis muss ich den Code einfügen ?

Gruss

Holger

P.S.: Wenn ich bei Unchecked 0 eingebe, habe ich immer ncoh das "Ausgegraut - Problem"
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 12:21
Hat keiner eine Lösung ???

Gruss

Holger
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 12:25
Nimm ne normale Checkbox und überwache Änderungen am DS mit dem hansa'schen Code.
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 12:50
Ja das wäre dann meine letzte Alternative gewesen.

Dachte nur, das ich das mit einer DBCheckbox einfacher gelöst bekomme ...

Gruss

Holger
  Mit Zitat antworten Zitat
marabu

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

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 12: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
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#9

Re: DBCheckBox.Unchecked = NULL

  Alt 19. Jul 2007, 13:01
Vielen dank,

habe mir auch schon überlegt die Felder, die Null sind mit 0 zu überbeschreiben.

Ich denke ich nehme eine CheckBox, da ich eh bei Änderung an der Checkbox noch andere procduren anstossen muss.

Gruss und danke

Holger

P.S.: Aber schade, das man Unchecked nicht als NULL definieren kann.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#10

Re: DBCheckBox.Unchecked = NULL

  Alt 20. Jul 2007, 07:36
Zitat von HolgerCW:
...P.S.: Aber schade, das man Unchecked nicht als NULL definieren kann.
Hai HolgerCW,

ich würde trotzdem die NULL Felder mit 0 überschreiben. Wenn mal ein anderer deinen Quellcode oder die Tabelle in der DB bearbeitet wüsste er sicher nicht das Du NULL als False interpretierst.

Wenn ich in einem Programm solch einen Code sehe:
Delphi-Quellcode:
begin
  if blubb.IsNull then
  begin
    MachEtwas;
  end;
end;
Würde ich Grundsätzlich davon ausgehen das in dem Feld blubb ein nicht definierter Wert steht.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz