2017-11-06 2 views
1

Ich verwende eine Funktion in MS Access, um einen Query-Feldwert mit einem DLookup zurückzugeben. Die Funktion übergibt einen Wert von einem vorhandenen Feld in der Abfrage an strPersonType.#Error in DLookup-Funktion

Die Funktion funktioniert einwandfrei, wenn in diesem Feld ein Wert vorhanden ist. Wenn jedoch kein Wert vorhanden ist, wird #Error zurückgegeben. In diesem Fall würde ich gerne einen Null oder Leerwert zurückgeben.

Ich habe versucht, Fehlerbehandlung und If Anweisungen (wie die eine unten) und ich konnte es bisher nicht beheben.

Egal was ich versuche, der Feldwert kommt als #Error.

Function LookUpPersonType2(strPersonType As String)    
    'Used to look up Person Type2 in the "Person Type Key" table given PERSON_TYPE 
    'Returns original supplied name if no variation 


    If IsNull(strPersonType) Or strPersonType = "" Then 
     LookUpPersonType2 = "" 
    Else 

     If IsNull(DLookup("[Person Type2]", "[Person Type Key]", "[PERSON_TYPE] ='" & strPersonType & "'")) Then 
      LookUpPersonType2 = strPersonType 
     Else 
      LookUpPersonType2 = DLookup("[Person Type2]", "[Person Type Key]", "[PERSON_TYPE] ='" & strPersonType & "'") 
     End If 
    End If 
    Debug.Print LookUpPersonType2 & "," 
End Function 
+0

Haben Sie die NZ-Funktion versucht? Als 'LookUpPersonType2 = NZ (DLOOKUP (...), NULL)' –

+0

Hey Darren, versuchte es. Immer noch das Problem #Error – Chuck0185

Antwort

1

Ich erkannte, dass ich den übergebenen Parameter in einen Variant-Variablentyp ändern musste, da die Möglichkeit besteht, dass der Wert NULL sein wird. Ursprünglich war es String-Variablentyp, und Strings können nicht NULL sein. Vielen Dank!