Null ist nicht 0 ist nicht “”. Das sind die grundlegenden Weisheiten, die man als Access-Entwickler verinnerlichen muss. Was ist aber dann Null Und wie erkenne ich die Unterschiede etwa zu 0 oder einer leeren Zeichenfolge In diesem Artikel erfahren Sie mehr zu diesem Thema und lernen den Umgang mit Null-Werten samt der dazu notwendigen Funktionen wie IsNull oder Nz kennen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1205_NullWerte.mdb.
Null, 0 und die leere Zeichenfolge
Wenn Sie auf die Daten einer Tabelle zugreifen – beispielsweise über eine Domänenfunktion wie DLookup – erhalten Sie verschiedenste Werte. Im Optimalfall finden Sie den gesuchten Wert wie etwa den Vornamen eines Kunden vor. Vielleicht wurde aber gar kein Vorname in den entsprechenden Datensatz eingetragen – dann ist das Feld leer und DLookup liefert den Wert Null zurück (Wir gehen an dieser Stelle davon aus, dass es einen Datensatz mit dem Wert 1 im Feld KundeID gibt – anderenfalls würde DLookup auch den Wert Null zurückliefern, aber diesmal, weil überhaupt kein passender Datensatz gefunden wurde).
Das können Sie prüfen, indem Sie im Direktbereich des VBA-Editors (zu öffnen mit Strg + G) die folgenden Anweisung absetzen:
DLookup("Vorname", "tblKunden", "KundeID = 1") Null
Wenn Sie das Ergebnis dieses Aufrufs von DLookup nun innerhalb einer kleinen Prozedur in eine Variable des Datentyps String eintragen möchten, führt dies zu einem Fehler (siehe Bild 1): Unzulässige Verwendung von Null. Null ist also zumindest schon einmal nichts, was man einer String-Variablen als Inhalt zuweisen kann.
Bild 1: Fehler beim Versuch, einer String-Variablen einen NULL-Wert zuzuweisen
Was tun Wahrscheinlich möchten Sie der Variablen an dieser Stelle schlicht und einfach eine leere Zeichenkette zuweisen, also den Ausdruck “”.
Die IsNull-Funktion
Um dies zu erledigen, können Sie vorab prüfen, ob das Feld den Wert Null enthält und in diesem Fall die leere Zeichenkette übergeben.
Dieses Unterfangen hat bereits vielen Access-Entwicklern Kopfzerbrechen bereitet. Die folgende If…Then-Bedingung prüft, ob der Vorname des Kunden mit dem Wert 1 im Feld KundeID vorhanden ist:
If DLookup("Vorname", "tblKunden", "KundeID = 1") = Null Then MsgBox "Vorname nicht vorhanden" Else MsgBox "Vorname vorhanden" End If
Wieder erwarten liefert der Code ein Meldungsfenster, wonach der Kunde vorhanden ist. Was läuft hier schief Nun: Der Vergleich mit dem Wert Null liefert immer den Ausdruck Null. Das bestätigt auch die folgende Anweisung im Direktfenster:
IsNull(Dlookup("Vorname", "tblKunden", "KundeID = 1") = NULL) Wahr
Die Prüfung eines Ausdrucks auf den Wert Null führen Sie mit der Funktion IsNull durch. Diese erwartet als Parameter den zu prüfenden Ausdruck und liefert den Wert True oder False zurück:
IsNull()
Bei der Prüfung eines Feldwertes setzen Sie die Funktion etwa so ein:
Public Sub AufNullPruefen() Dim strVorname As String If IsNull(DLookup("Vorname", "tblKunden", "KundeID = 1")) = True Then strVorname = "" Else strVorname = DLookup("Vorname", "tblKunden", "KundeID = 1") End If Debug.Print strVorname End Sub
IsNull und IIf
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: