Ich erstelle ein Login für Access mit VBA.Microsoft Access; Fehler 94: Ungültige Verwendung von Null
Alles funktioniert, bis der eingegebene Benutzername (auf dem Login-Formular) falsch geschrieben ist. Wenn falsch geschrieben, bekomme ich "Fehler 94; Ungültige Verwendung von Null". Im Folgenden ist mein Code (bis zu, wo der Fehler ist)
Private Sub Command1_Click()
Dim user As String
Dim userlevel As Integer
Dim TempPass As String
Dim ID As Integer
Dim UserName As String
Dim TempLoginID As String
Dim password As String
Dim testcomp As Integer
If IsNull(Me.txtUserName) Then
MsgBox "Please enter LoginID", vbInformation, "LoginID Required"
Me.txtUserName.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please enter Password", vbInformation, "Password Required"
Me.txtPassword.SetFocus
Else
If testcomp = StrComp(Me.txtPassword.Value, (DLookup("[Password]", "tblUser", "[Userlogin]= '" & Me.txtUserName.Value & "'")), vbBinaryCompare) = 0 Then
MsgBox "Incorrect LoginID or Password" & vbNewLine & "Please contact an administrator for login information", vbInformation, "Password Required"
Else
TempLoginID = Me.txtUserName.Value
UserName = Nz(DLookup("[UserLogin]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'"), "")
userlevel = Nz(DLookup("UserSecurity", "tblUser", "UserLogin = '" & Me.txtUserName.Value & "'"), "")
TempPass = Nz(DLookup("[Password]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'"), "")
ID = Nz(DLookup("[UserID]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'"), "")
DoCmd.Close
If (TempPass = "Password") Then
MsgBox "Please change password", vbInformation, "New password required"
DoCmd.OpenForm "pwdupdate_frm", , , "[UserID] = " & ID
Else
Die Debug nimmt mich auf die Linie:
UserName = Nz(DLookup("[UserLogin]", "tblUser", "[UserLogin] = '" & Me.txtUserName.Value & "'"),"")
Was bin ich?
Vielen Dank für jede Hilfe!
Das löste den 'Fehler 94' nur jetzt ich erhalte 'Fehler 13; type mismatch 'im Bereich userlevel = Nz(). Ich bin ein Anfänger bei diesem und versuche, mich selbst zu unterrichten, also bitte entschuldigen Sie mein schlechtes Wissen (und danke für die Hilfe bis jetzt) – MK08
[Nz gibt einen anderen Wert, wenn Null] (https://msdn.microsoft.com/ en-us/library/aa172237 (v = Büro.11) .aspx). * userlevel * ist eine Ganzzahl, Sie können ihm keinen Zeichenfolgenwert unterschreiben. Sehen Sie, ob Sie einen Int-Wert verwenden können, der Null anzeigt, vielleicht eine 0 oder -1: Nz (DLookup (...), -1) – marlan
Ich habe gerade Ihre Antwort gesehen, nachdem ich es mit etwas Recherche herausgefunden habe. Ich bin nicht 100% sicher, was die Nz() Funktion tut/wie es funktioniert..aber es funktioniert! (Siehe meine Antwort unten und danke nochmals für die Hilfe!) – MK08