Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe - Abfrage von Nullwerten (https://www.delphipraxis.net/48982-hilfe-abfrage-von-nullwerten.html)

ratloser 3. Jul 2005 21:46

Datenbank: Access • Version: 2000 • Zugriff über: TADOConnection, TADOBetterDatabase, TDatasource

Hilfe - Abfrage von Nullwerten
 
Ich hab da ein Problem. Vermutlich ein Anfängerfehler.

Ich versuche den Eintrag eines Feldes abzufragen. Wenn eine Postleitzahl eingetragen wird,
dann sucht er zu der zugehörigen Postleitzahl den Ort und die Vorwahl.

Delphi-Quellcode:
procedure Tstammdaten_lieferanten.plzExit(Sender: TObject);
var
   suchplz: string;
   findort: string;
   findvor: string;
begin
   suchplz := db_lieferanten['plz'];
   if plz.Field.IsNull = false then
      if db_plz.Locate('plz',suchplz,[loPartialKey]) = true then
      begin;
         findort := db_plz['gemeinde'];
         findvor := db_plz['vorwahl'];
         db_lieferanten['ort'] := findort;
         if telefon.field.isnull = false then
            db_lieferanten['telefon'] := findvor;
      end;
end;
Das Problem ist nun, wenn das Feld leer ist, dann bringt er einen Fehler.
Wenn mal ein Wert in das Feld der Datenbank eingetragen war, und man diesen Wert löscht,
dann kann ich dies mit

Delphi-Quellcode:
if plz.Field.IsNull = false then
abfangen.

Wenn man aber einen Datensatz neu anlegt, in das Feld klickt und das Feld leer verläßt,
dann bringt er folgenden Fehler:


Delphi-Quellcode:
Variante des Typs(Null) konte nicht in Typ(String) konvertiert werden.
Vielen Dank für Eure Hilfe!

Ratloser

bttb930 3. Jul 2005 22:23

Re: Hilfe - Abfrage von Nullwerten
 
es gibt einen unterschied zwischen leer und NULL. Mit IsNull prüfst Du ob der Wert wirklich NULL ist, also undefiniert ist. In Deinem Fall ist er das aber nicht, ein Leerstring ist halt nicht undefiniert sondern eben ein Leerstring.

Prüfe einfach

Delphi-Quellcode:
if telefon.field.isnull or telefon.field = '' then
Übrigens ist

Delphi-Quellcode:
if telefon.field.isnull = false then
das gleiche wie

Delphi-Quellcode:
if telefon.field.isnull then

BlackJack 3. Jul 2005 23:40

Re: Hilfe - Abfrage von Nullwerten
 
Zitat:

Zitat von bttb930
Übrigens ist

Delphi-Quellcode:
if telefon.field.isnull = false then
das gleiche wie

Delphi-Quellcode:
if telefon.field.isnull then

und jetzt überleg nochmal genau was du da geschrieben hast ;)

ratloser 3. Jul 2005 23:47

Re: Hilfe - Abfrage von Nullwerten
 
Vielen Dank!

Jetzt funktioniert es - ist halt ne Plage mit den Anfängern.

LG Ratloser

bttb930 4. Jul 2005 15:01

Re: Hilfe - Abfrage von Nullwerten
 
Zitat:

Zitat von BlackJack
Zitat:

Zitat von bttb930
Übrigens ist

Delphi-Quellcode:
if telefon.field.isnull = false then
das gleiche wie

Delphi-Quellcode:
if telefon.field.isnull then

und jetzt überleg nochmal genau was du da geschrieben hast ;)

ooops, not vergessen...

Aber letztens habe ich in Delphi mal

Delphi-Quellcode:
  True := False;
ausprobiert und das geht...

Hansa 4. Jul 2005 19:47

Re: Hilfe - Abfrage von Nullwerten
 
Was gibts da auzuprobieren ? 1 := 0 das ist syntaktisch völlig korrekt.

marabu 4. Jul 2005 19:57

Re: Hilfe - Abfrage von Nullwerten
 
Ich behaupte jetzt mal TRUE := FALSE geht in Delphi nur unter engen Randbedingungen:

Delphi-Quellcode:
var
  true: boolean;
begin
  true := false;
end;
Und die nötige Variablen-Deklaration muss dann schon morgens zwischen 4 und 5 Uhr entstanden sein. Ansonsten gilt auch für 1 := 0, dass es auf der linken Seite einer Zuweisung stets eines lvalues bedarf.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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