[VB6] Null-Wert

Hi,

beim auslesen einer Access-Datenbank wird mir im falle eines leeren Datenfeldes eine Null zurückgeliefert.
Diese wird von VB allerdings nicht als solche erkannt (und führt dann zu einem Fehler, da ein String nicht Null enthalten kann…)
Kennt einer von euch dieses Problem und kann mir helfen?

als beispiel:

dim rs as recordset
if rs.fields(„feld“).value=Null then
string=""
else
string=rs.fields(„feld“).value
end if

problem: Enthält rs.fields(„feld“).value nun tatsächlich Null, wird dieses aber von VB nicht erkannt und es versucht die Null dem string zuzuweisen (was natürlich einen Fehler aufwirft…)

könnt ihr mir da helfen?
danke!
mfg,
Thomas

ReHi

Variable=Null geht nicht. Wenn du nach Null fragen willst, mußt du folgendes formulieren:

If IsNull(rs!Field) then
 Msgbox "Field Ist Null" 
 exit sub
end if

cu, holli

Hi Thomas!

beim auslesen einer Access-Datenbank wird
mir im falle eines leeren Datenfeldes
eine Null zurückgeliefert.
Diese wird von VB allerdings nicht als
solche erkannt (und führt dann zu einem
Fehler, da ein String nicht Null
enthalten kann…)

Du verwechselst da was!
Null ist nicht 0, sondern der Hex- bzw. Ascii-Wert 0. Wird aus der Datenbank NULL geliefert, bedeutet das soviel wie „nicht definierte Variable“.

Da VB die Eigenschaft hat, numerische Variablen von sich aus auf den Initialwert 0 (das ist jetzt der Zahlenwert 0) zu setzen, macht ein NULL bei numerischen Variablen nichts aus.

Bei Textvariablen ist das anders. Eine Textvariable mit Inhalt NULL ist noch nicht einmal leer (leer ist ja ein gültiger Inhalt) - eine NULL-Textvariable ist schlicht fehlerhaft und führt zu den bekannten Fehlermeldungen.

Daher: vor der Zuweisung von Datenbankinhalten an Textvariablen den Datenbankinhalt auf NULL überprüfen (mit der ISNULL-Funktion) und im positiven Fall die Textvariable auf Leer setzen (auf keinen Fall auf NULL)

Hallo,
wie die Vorgänger weiter unten schon gesagt haben, gibt’s da einen Unterschied zwischen NULL und 0 bzw. „“. Dieser KANN wichtig sein - MUSS ES ABER NICHT.
In den meisten Fällen ist es mir nämlich wurscht ob „“ oder NULL - leer ist leer, nix da - no data!!
Deshalbe verwende ich folgende Funktionen (pro Datentyp eine):

Public Function DbString(var As Variant) As String
DbString = IIf(IsNull(var), "", var)
End Function

Praktisches Verwendungs-Beispiel:

dim rs as recordset
if DbString(rs.fields("feld").value)="" then
 string=""
else
 string=DbString(rs.fields("feld").value)
end if

Das ganze lässt sich natürlich dann noch verfeinern und vereinfachen … soll aber nur zur Anregung dienen!!!

greets from MichL (Vienna)

Hallo,

mein Tipp wenn du es ganz einfach Umgehen willst!

Bei Textfeldern einfach immer &"" anfügen
danach gibt es keinen Fehler mehr!
Bsp:
var_test=rs.fields(„feld“)& „“

Bei Zahlenfeldern einfach immer +0 anfügen!
Bsp:
var_test=rs.fields(„feld“)+ 0

Ciao Patrick