Hallo,
habe ein Problem.
Nachstehender Code macht soweit alles was er soll, jedoch prüft er nicht ob der Benutzername in der tbl_Benutzer vorhanden ist. Es soll bei nicht vorhanden eine Fehlermeldung ausgeben werden: "Benutzername ist nicht vorhanden".
Hab mich schon versucht, aber bekomme immer eine Fehlermeldung, deshalb habe ich den fehlerhaften Bereich mal raus gelassen.
Vielen Dank im Voraus für eure geschätze Hilfe.
Private Sub btnLogin_Click()
If IsNull(Me.BN_Eingabe) Or IsNull(Me.PW_Eingabe) Then 'kein Benutzername u.Passwort angegeben'
MsgBox "Bitte geben Sie einen gültigen Benutzernamen und Passwort ein", vbInformation
Exit Sub
End If
Dim PWCheck As String 'Checkt ob Passwort mit Benutzername übereinstimmt MRies'
PWCheck = DLookup("Passwort", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
If PWCheck = Me.PW_Eingabe Then 'Gibt die vorgegebenen Freigaben der Benutzer frei'
Zugriff_Gewerbe = DLookup("RolleGewerbe", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
Zugriff_Kfm = DLookup("RolleKfm", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
Zugriff_Admin = DLookup("RolleAdmin", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
DoCmd.OpenForm "frm_Start"
DoCmd.Close acForm, "frm_Anmeldung"
Else
MsgBox "Benutzername oder Kennwort ist falsch", vbCritical
End If
End Sub
Hi,
ZitatHab mich schon versucht, aber bekomme immer eine Fehlermeldung, deshalb habe ich den fehlerhaften Bereich mal raus gelassen.
das ist keine gute Idee, du solltest auch den fehlerhaften Code zeigen, damit wir sehen was du vorhast und dir den Fehler erklären können.
So sollte das wohl auch mit dem Benutzer-Check klappen:
Private Sub btnLogin_Click()
Dim PWCheck As String ' Variable zum Auslesen des Passworts
If IsNull(Me.BN_Eingabe) Or IsNull(Me.PW_Eingabe) Then 'kein Benutzername u.Passwort angegeben'
MsgBox "Bitte geben Sie einen gültigen Benutzernamen und Passwort ein", vbInformation
Else
PWCheck = NZ(DLookup("Passwort", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'"),"")
If PWCheck = "" Then
MsgBox "Benutzername ungültig!", vbCritical
ElseIf PWCheck <> Me.PW_Eingabe Then
MsgBox "Kennwort ist falsch", vbCritical
Else
Zugriff_Gewerbe = DLookup("RolleGewerbe", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
Zugriff_Kfm = DLookup("RolleKfm", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
Zugriff_Admin = DLookup("RolleAdmin", "tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'")
DoCmd.OpenForm "frm_Start"
DoCmd.Close acForm, "frm_Anmeldung"
End If
End If
End SubBTW:
Was sind das für "Zugriffs"-Variablen? Sind sie global definiert?
{Edit: "Else If" -> "ElseIf"}
Hallo,
ZitatIf PWCheck = "" Then
ist m. E. recht mehrdeutig in diesen Kontext ...
Ein Test direkt auf den Benutzernamen wäre günstiger:
If Dcount("*","tbl_Benutzer", "Benutzername = '" & Me!BN_Eingabe & "'") > 0 Then
'Benutzername vorhanden
Else
'Benutzername unbekannt
End If
Zitat von: MaggieMay am Juni 13, 2016, 23:33:58
Hi,
ZitatHab mich schon versucht, aber bekomme immer eine Fehlermeldung, deshalb habe ich den fehlerhaften Bereich mal raus gelassen.
das ist keine gute Idee, du solltest auch den fehlerhaften Code zeigen, damit wir sehen was du vorhast und dir den Fehler erklären können.
Ja, da gebe ich dir vollkommen recht.
Möchte ihn euch auch nicht vorenthalten. Hattes es damit versucht:
Dim BNCheck As String
If BNCheck = Me.BN_Eingabe = DLookup("tbl_Benutzer", "Benutzername = '" & Me.BN_Eingabe & "'") = False Then
MsgBox "Bitte geben Sie einen gültigen Benutzernamen an"
Exit Sub
End If
Die Zugriffsvariablen habe ich vorher im allgemein Modul benannt:
Public Zugriff_Gewerbe As Boolean
Public Zugriff_Kfm As Boolean
Public Zugriff_Admin As Boolean
Der Code von MaggieMay wirft mir ein Fehler aus in Zeile:
Else If PWCheck <> Me.PW_Eingabe Then
Vielen Dank für eure schnelle Unterstützung.
Ich gebe meine VBA Schwäche offen zu. ;D
>freu< ich habe den Fehler selbst gefunden.
Einfach ein Enter nach Else.
Außerdem fehlte zum Abschluss noch ein End if.
Alles funktioniert super - ich bin happy und sage
1000 DANK
Hallo,
Zitat von: Mamba4711 am Juni 14, 2016, 18:40:53Der Code von MaggieMay wirft mir ein Fehler aus in Zeile:
Else If PWCheck <> Me.PW_Eingabe Then
Sorry, das "ElseIf" muss zusammen geschrieben werden, das hatte ich wohl beim Zusammenkopieren und Überarbeiten des Codes übersehen.
Dann erübrigt sich auch das zweite "End If".
Hi,
Zitat von: DF6GL am Juni 14, 2016, 07:49:13
ZitatIf PWCheck = "" Then
ist m. E. recht mehrdeutig in diesen Kontext ...
nicht unbedingt mehrdeutig, aber zumindest nicht eindeutig, wenn man unterstellt, dass das Passwort auch "" (leer) sein kann. Dies zu verhindern sollte aber wohl bei der Eingabe/Speicherung eines Passwortes selbstverständlich sein.
Zitatnicht unbedingt mehrdeutig, aber zumindest nicht eindeutig
::)
könnte dann ja "undeutig" sein... :P