Autor Beitrag
Quake User
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Do 06.01.11 00:39 
Wie prüfe ich ein Datenfeld auf NULL? Das Feld ist ja leer. Eine Prüfung wie:
ausblenden Delphi-Quelltext
1:
if (DataModul.ADOTable.FieldByName('Test').Value = ''then					

funktioniert aber nicht. Ich kann kompilieren, aber der if Fall tritt nie ein.
Der Datentyp von "Value" ist variant. Den kann ich sicher nicht auf NULL prüfen. ?
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 06.01.11 00:50 
ausblenden Delphi-Quelltext
1:
If DataModul.ADOTable.FieldByName('Test').IsNull ...					

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Quake User Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Do 06.01.11 01:10 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
If DataModul.ADOTable.FieldByName('Test').IsNull ...					


Ich hatte folgendes getestet:
ausblenden Delphi-Quelltext
1:
If DataModul.ADOTable.FieldByName('Test').AsString = ''					

Aber "IsNull" ist sicher sauberer.
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Do 06.01.11 01:26 
user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte folgendes getestet:
ausblenden Delphi-Quelltext
1:
If DataModul.ADOTable.FieldByName('Test').AsString = ''					

Aber "IsNull" ist sicher sauberer.

ein leerer String und NULL sind zwei verschiede paar schuhe.
daher aufgepasst.

Moderiert von user profile iconNarses: Zitat repariert.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Do 06.01.11 08:45 
Ich weiß aus meinen ersten Erfahrungen mit Delphi XE, dass derWert NULL dort nicht definiert ist. Ich hatte bei Units, in der einer Variant-Variablen NUL zugewiesen wurden, Fehler beim Compilieren bekommen.

Daher bleibt nur die schon benannte Abfrage .isNull

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.01.11 15:01 
wenn variants in der uses liste steht, dann geht der check myfield.asvariant = null
Quake User Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Fr 07.01.11 02:15 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
If DataModul.ADOTable.FieldByName('Test').IsNull ...					


FYI: Ich habe festgestellt, dass "IsNull" nicht darauf prüft, ob das Datenfeld in der DB wirklich = NULL ist. Es prüft nur auf leer.
Damit ist die Prüfung auf den Leerstring genau so gut.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 07.01.11 10:07 
@Quake User

Einspruch Euer Ehren....
NULL und Leer('') sind zwei komplett verschiedene Sachen, spätestens beim verketten von Felder per SQL in einer ansikonformen Datenbank wirst Du dies merken.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Quake User Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: Mo 17.01.11 03:34 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
@Quake User

Einspruch Euer Ehren....
NULL und Leer('') sind zwei komplett verschiedene Sachen, spätestens beim verketten von Felder per SQL in einer ansikonformen Datenbank wirst Du dies merken.


Genau das habe ich doch oben geschrieben. Oder? Ich kenne den Unterschied zwischen 0 und NULL.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 17.01.11 08:42 
dann verstehe ich Dein letztes Posting nicht...
ausblenden Delphi-Quelltext
1:
DataModul.ADOTable.FieldByName('Test').IsNull.					

liefert bei einem Leerstring erwartungsgemäß FALSE.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS