Hallo Zusammen,
beim öffnen meiner DB wird ein Benutzer "Username" und ein "Passwort" abgefragt. Bei richtiger Eingabe gehts entsprechend weiter.
Nun möchte ich je nach dem ob der Login "erfolgreich" war oder "fehlgeschlagen" ist, weil Falscheingabe, dieses protokollieren.
Dazu habe ich im Formular "PasswortAbfrage" zu den beiden schon vorhandenen Feldern, "Text0" für eingabe "Username" und "Text2" für die eingabe "Passwort" ein weiteres ungebundenes Textfeld "LogInStatus" hinzugefügt.
Nun habe ich dem Feld "Text2" "Nach Aktualisierung" dem bereits vorhanden Code einen weiteren Codeschnipsl hinzugefügt:
If Me!Username = Me!Text0 And Me!Passwort = Me!Text2 Then
'"erfolgreich" ins Textfeld schreiben
Me!LogInStatus = "erfolgreich"
Else
'"fehlgeschlagen" ins Textfeld schreiben
Me!LogInStatus = "fehlgeschlagen"
'Log-in-Protokoll schreiben
DoCmd.OpenQuery "abf_LogInProtokoll", acNormal, acAdd
End If
Nun sollte eigentlich folgende passieren, Username und Passwort werden mit Text0 und Text2 verglichen, wenn alles i.O. dann sollte ins Feld LogInStatus "erfolgreich" geschrieben werden. Wenn Username und Passwort nicht mit Text0 und Text2 übereinstimmen dann sollte ins Feld "LogInStatus" "fehlgeschlagen" geschrieben werden.
Im Anschluss soll das Ergebnis über eine Anfüge-Abfrage "abf_LogInProtokoll" in die Tabelle "tbl_LoginProtokoll" geschrieben werden.
Nun passiert aber folgendes. Wenn Username und Passwort i.O. sind wird ins Feld "LogInStatus" zwar "erfolreich" geschrieben aber das ganze wird nicht in die "tbl_LoginProtokoll" übertragen. Auch wenn Username und Passwort nicht passen wird ins ins Feld "LogInStatus" "erfolgreich" geschrieben und übertrag funktioniert trotzdem nicht.
Wenn ich den Code wie folgt kürze:
If Me!Username = Me!Text0 And Me!Passwort = Me!Text2 Then
'"erfolgreich" ins Textfeld schreiben
Me!LogInStatus = "erfolgreich"
'Log-in-Protokoll schreiben
DoCmd.OpenQuery "abf_LogInProtokoll", acNormal, acAdd
End If
wird zwar das Ergebis in die "tbl_LoginProtokoll" übertragen. Aber egal ob der Vergleich des "Username" und "Passwort" i.O. oder n.i.O. sind, wird ins Feld "LogInStatus" immer "erfolgreich" eingetragen und auch so in die "tbl_LoginProtokoll" übertragen.
Wo liegt denn mein Fehler?
Hätte jemand einen Hinweis für mich?
Gruss
mad
Hallo,
unklar, was Du hier machst.
Woher kommt Me!Username und was ist das?
Woher kommt Me!Passwort und was ist das?
Welches sind die Eingabefelder, die der User ausfüllen muss?
Debuggen könnte helfen....:
Setze einen Haltepunkt auf das IF-Statement und prüfe den Inhalt der Textfelder.
btw: Textvergleich für Passwort-Tests sollten mit StrComp() erfolgen, ein normaler "="-Vergleich berücksichtigt keine Groß-/Kleinschreibung.
Docmd.Openquery ist auch Fehl am Platz. Führe die Insert-Abfrage mit
Currentdb.Execute "abf_LogInProtokoll", dbFailOnError
aus.
Ich hoffe ich kann es noch etwas besser erklären.
Ich habe ein Formular ,,PasswortAbfrage" mit drei ungebundenen Textfeldern:
,,Text0" für Eingabe eines Benutzers
,,Text2" für die Eingabe eines PW
,,LogInStatus"
,,Username" und ,,Passwort" sind die Felder in der ,,tbl_Benutzer" zum vergleichen.
Ich denke hier ist bereits mein erster Fehler mit Me!Username und Me!Passwort.
Debuggen führe ich immer aus, daß habe ich mir mittlerweilen angewöhnt. Es kommt aber keine Fehlermeldung.
Wenn der ,,Username" und ,,Text0" übereinstimmen und ,,Passwort" und ,,Text2" auch dann soll in Textfeld ,,LogInStatus" der Text ,,erfolgreich" eingetragen werden. Wenn Eingaben in ,,Text0" u. ,,Text2" gemacht werden die nicht zu ,,Username" und ,,Passwort" aus der Tabelle ,,tbl_Benutzer" passen dann soll ins Textfeld ,,LogInStatus" der Text ,,fehlgeschlagen" eingetragen werden.
Die Prozedur soll ,,Nach Aktualisierung" von Text2 starten:
Private Sub Text2_AfterUpdate()
......
Egal ob ,,erfolgreich" oder ,,fehlgeschlagen" soll am Ende der Prozedur die Inhalte aus ,,Text0" und ,,LogInStatus" per ,,Anfüge-Abfrage ,,abf_LogInProtokoll" an die tbl_LoginProtokoll" übertragen werden.
Rest kann ich erst heute Abend ausprobieren.
Gruss
Mad
Hallo,
ist das Formular an die Passwort-/Usertabelle gebunden und stehen demnach die (richtigen) Daten aus den aktuellen DS-Feldern "Username" und "Password" im Formular zur Verfügung?
Text0 und Text2 würde ich sinnvoller benennen... :o z. B txtUsername und txtPasswort. Ich benamse ungebundene Textfelder immer mit "txt" als Prefix.
Sub Text2_Afterupdate()
If Me!Username = Me!txtUsername And Me!Passwort = Me!txtPasswort Then ' hier evtl StrComp verwenden
Me!txtLogInStatus = "erfolgreich"
Else
Me!txtLogInStatus = "fehlgeschlagen"
End If
CurrentDb.Execute "abf_LogInProtokoll", dbFailOnError
End Sub
Nur kurze Zwischeninfo,
Tabelle steht derzeit nicht mit dem Formular in Verbindung.
In die Thematik StrComp() muß ich mich erst einlesen. Ist für mich noch völlig unbekannt.
Die Felder Text0 u. Text2 werde ich umbennen.
Wie gesagt aber erst heute Abend.
Danke schon mal.
mad
Hallo,
Sub txtPasswort_Afterupdate()
Dim strPasswrt as String
strPasswrt=nz(Dlookup("Passwort","tbl_User", "Username = '" & Me!txtUsername & "'"),"")
If strPasswrt = "" Then
Msgbox "Fehler: Es wurde kein Passwort für User " & Me!txtUsername & " vergeben.", vbOkOnly
Exit Sub
End If
If StrComp(strPasswrt, Me!txtPasswort, vbBinaryCompare) = 0 Then
Me!txtLogInStatus = "erfolgreich"
Else
Me!txtLogInStatus = "fehlgeschlagen"
End If
CurrentDb.Execute "abf_LogInProtokoll", dbFailOnError
End Sub
Hallo,
habe die Codezeile noch mit einer schließenden Klammer versehen, denn der Text wurde in rot angezeigt.
strPasswrt=nz(Dlookup("Passwort","tbl_User", "Username = '" & Me!txtUsername & "'",""))Jetzt kommt aber folgende Meldung beim kompilieren:
ZitatFalsche Anzahl an Argumenten oder ungültige Zuweisung
und "DLookup" wird blau hinterlegt.
Habe dann mal im Google gesucht und bin auf folgenden Beitrag gestoßen:
https://www.enzinger.net/argserror.html
Allerdings verstehe ich das nicht.
Gruss
mad
Hallo,
Die hinzugefügte Klammer gehört vor das letzte Komma; funzt bei dir IntelliSense nicht?
gruss ekkehard
Hallo,
sorry, solche Fehler schleichen sich bei Luft-Codierung ein ... 8)
(Im Beitrag korrigiert)
Hallo Zusammen,
mit der Codezeile:
CurrentDb.Execute "abf_LogInProtokoll", dbFailOnErrorbekomme ich folgende Meldung:
ZitatLaufzeitfehler '3061', 2 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben
mit der alten Codezeile
DoCmd.OpenQuery "abf_LogInProtokoll", acNormal, acAddfunktionierts.
Ist das nun Gut oder eher schlecht?
Gruss
mad
Hallo,
es ist gut, dass eine Fehlermeldung kommt und es ist schlecht, wenn es mit Openquery (scheinbar) funktioniert.
Gewöhn Dir doch mal an, bei solchen Problemen den SQL-String der Abfrage oder den entspr. kompletten Code zu posten.
Wir können nicht hellsehen .. :(
Hallo,
kompletter Code:
Private Sub txtpasswort_AfterUpdate()
Dim strPasswrt As String
DoCmd.SetWarnings False
strPasswrt = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "UserName = '" & Me!txtUsername & "'"), "")
If strPasswrt = "" Then
MsgBox "Fehler: Es wurde kein Passwort für User " & Me!txtUsername & " vergeben.", vbOKOnly
Exit Sub
End If
If StrComp(strPasswrt, Me!txtpasswort, vbBinaryCompare) = 0 Then
Me!txtLogInStatus = "erfolgreich"
Else
Me!txtLogInStatus = "fehlgeschlagen"
End If
CurrentDb.Execute "abf_LogInProtokoll", dbFailOnError
'DoCmd.OpenQuery "abf_LogInProtokoll", acNormal, acAdd
DoCmd.SetWarnings True
'DoCmd.OpenForm FormularZulassung
'DoCmd.Close acForm, "PasswortAbfrage"
End Sub
SQL-String der Abfrage "abf_LogInProtokoll":
INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus )
SELECT Now() AS LogInDatum, forms!PasswortAbfrage![txtUsername] AS Benutzername, forms!PasswortAbfrage![txtLogInStatus] AS LogInStatus;
Gruss
mad
Hallo,
die Abfrage nutzt Formularverweise, die von .Execute nicht aufgelöst werden.
Statt Openquery ist für Aktionsabfragen die Access-Methode Docmd.RunSql zu verwenden (trotzdem eher nicht zu empfehlen).
Bei Execute müssen die Parameter mittels VBA durch Zusammensetzen des SQL-Strings übergeben werden ( oder jetzt hier nicht gezeigt, muss man auf die Parameters-Sektion der Abfrage zurückgreifen).
ZitatCurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus ) " & _
" Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtLogInStatus] & "')" , dbFailOnError
Hallo,
habe nun den Code, bzw. einen Teil davon in meinen produkiven Code eingebaut:
Codeausschnitt:
''''von hier
If StrComp(strPasswrt, Me![txtpasswort], vbBinaryCompare) = 0 Then
Me![txtLogInStatus] = "erfolgreich"
Else
Me![txtLogInStatus] = "fehlgeschlagen"
End If
CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus, Klarname ) " & _
" Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtLogInStatus] & "','" & Me![txtKlarname] & "')", dbFailOnError
''''bis hier
und um "Klarname" erweitert.
Es wird bis auf "LogInStatus" alles richtig in die "tbl_LogInProtokoll" geschrieben.
Beim "LogInStatus" wird aber immer "fehlgeschlagen" eingetragen.
Kompilieren bringt keine Meldung und auch so kommt keine Meldung.
??????
Gruss
mad
Hier der ganze Code:
Private Sub txtpasswort_AfterUpdate()
Dim NamenSuchstring As String
Dim PWSuchstring As String
Dim SQLNamenSuchstring As String
Dim SQLPWSuchstring As String
Dim SQLManager As String
Dim SQLKontrolle As String
Dim SQLEinlesen As String
Dim SQLLogbuch As String
Dim Sql_Loeschen As String
Dim strPasswrt As String
Dim FalschPW As String
Dim FormularZulassung As String
FalschPW = Nz(Me!txtpasswort, "")
On Error Resume Next
NamenSuchstring = Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
PWSuchstring = Nz(EncodeString(Me!txtpasswort, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
SQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
" AND Username = '" & NamenSuchstring & "'"), "")
''''von hier
If StrComp(strPasswrt, Me![txtpasswort], vbBinaryCompare) = 0 Then
Me![txtLogInStatus] = "erfolgreich"
Else
Me![txtLogInStatus] = "fehlgeschlagen"
End If
CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus, Klarname ) " & _
" Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtLogInStatus] & "','" & Me![txtKlarname] & "')", dbFailOnError
''''bis hier
If SQLPWSuchstring = "" Then
SQLKontrolle = "INSERT INTO tabUserPWKontrolle " & "(Falscheingabe, Zeit) " & "VALUES ('" & FalschPW & "', now)"
CurrentDb.Execute SQLKontrolle
If DCount("[Falscheingabe]", "tabUserPWKontrolle") > 2 Then
SQLEinlesen = "SELECT Falscheingabe, Zeit " & "FROM tabUserPWKontrolle"
SQLLogbuch = "INSERT INTO tabUserPWLogbuch " & "(Falscheingabe, Zeit) " & SQLEinlesen
CurrentDb.Execute SQLLogbuch
MsgBox "Sie hatten 3 Versuche. Leider schliesst die DB jetzt."
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
DoCmd.QUIT
End If
Me!PW_Aendern1.SetFocus
Me!txtUsername = ""
Me!txtpasswort = ""
Me!txtUsername.Visible = True
Me!txtUsername.Visible = True
Me!txtpasswort.Visible = False
Dim Zaehler As String
Zaehler = DCount("[Falscheingabe]", "tabUserPWKontrolle")
MsgBox "Das Passwort ist unbekannt!" & Chr(13) & Chr(10) & Zaehler & ". Versuch von 3 Versuchen"
Exit Sub
Else
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
TempVars.Add "Klarname", globalerBearbeiter
FormularZulassung = Nz(DLookup("FormularZulassung", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
If Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "") = Nz(DLookup("Username", "tabPWUsergruppe_Allg", "Username ='" & NamenSuchstring & "'"), "") Then
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
DoCmd.OpenForm FormularZulassung
DoCmd.Close acForm, "PasswortAbfrage"
End If
End If
End Sub
Hallo,
habs auch mal so versucht, habt aber den gleichen negativen Effekt.
Codezeile:
If DLookup("[passwort]", "tabPWUsergruppe_Allg", "[Username] = '" & Me!txtpasswort & "'") = Me!txtUsername Then
statt:
If StrComp(strPasswrt, Me![txtpasswort], vbBinaryCompare) = 0 Then
es wir wieder nur "fehlgeschlagen" eingetragen.
Gruss
mad
Hallo,
was macht dies für einen Sinn?:
ZitatSQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
" AND Username = '" & NamenSuchstring & "'"), "")
Sollte eher doch so aussehen:
ZitatstrPasswrt = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
Und wenn "strPasswrt" (als ausgelesener Passwort-Wert) auch verschlüsselt ist, muss der hier zunächst entschlüsselt werden. In "txtpasswort" dürfte Klartext drinstehen.
Der Else-Zweig wird allem Anschein nach immer durchlaufen, weil es keine Übereinstimmung zwischen "strPasswrt" und "txtpasswort" gibt.
Und wie gesagt: Haltepunkt am Codeanfang setzen und Schritt für Schritt die Variableninhalte auf Plausibilität prüfen...
Hallo,
ZitatUnd wie gesagt: Haltepunkt am Codeanfang setzen und Schritt für Schritt die Variableninhalte auf Plausibilität prüfen...
Wo kann man dazu was nachlesen, wie das funktioniert, wie man vorgeht? Möglichst was Anfängertaugliches.
Ich habe keine Ahnung.
Gruss
mad
Hallo,
siehe Bild.
Hallo,
sitze schon wieder Stunden über dem Thema. Habe einiges ausprobiert und wieder verworfen. Habe das mit dem Haltepunkt woweit als möglich angewendet, und dachte das alles soweit unverschlüsselt ist was für das "erfolgreich" bzw. "fehlgeschlagen" notwendig ist.
Aber irgendwie stoße ich deutlich an meine Grenzen.
Ich lasse jetzt einfach den LogInStatus weg.
dann sieht der Codeso aus:
Private Sub txtpasswort_AfterUpdate()
Dim NamenSuchstring As String
Dim PWSuchstring As String
Dim SQLNamenSuchstring As String
Dim SQLPWSuchstring As String
Dim SQLManager As String
Dim SQLKontrolle As String
Dim SQLEinlesen As String
Dim SQLLogbuch As String
Dim Sql_Loeschen As String
'Dim strPasswrt As String
Dim FalschPW As String
Dim FormularZulassung As String
FalschPW = Nz(Me!txtpasswort, "")
On Error Resume Next
NamenSuchstring = Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
PWSuchstring = Nz(EncodeString(Me!txtpasswort, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
SQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
" AND Username = '" & NamenSuchstring & "'"), "")
''''von hier
'DoCmd.SetWarnings False
CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, Klarname ) " & _
" Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtKlarname] & "')", dbFailOnError
'DoCmd.SetWarnings True
''''bis hier
If SQLPWSuchstring = "" Then
SQLKontrolle = "INSERT INTO tabUserPWKontrolle " & "(Falscheingabe, Zeit) " & "VALUES ('" & FalschPW & "', now)"
CurrentDb.Execute SQLKontrolle
If DCount("[Falscheingabe]", "tabUserPWKontrolle") > 2 Then
SQLEinlesen = "SELECT Falscheingabe, Zeit " & "FROM tabUserPWKontrolle"
SQLLogbuch = "INSERT INTO tabUserPWLogbuch " & "(Falscheingabe, Zeit) " & SQLEinlesen
CurrentDb.Execute SQLLogbuch
MsgBox "Sie hatten 3 Versuche. Leider schliesst die DB jetzt."
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
DoCmd.QUIT
End If
Me!PW_Aendern1.SetFocus
Me!txtUsername = ""
Me!txtpasswort = ""
Me!txtUsername.Visible = True
Me!txtUsername.Visible = True
Me!txtpasswort.Visible = False
Dim Zaehler As String
Zaehler = DCount("[Falscheingabe]", "tabUserPWKontrolle")
MsgBox "Das Passwort ist unbekannt!" & Chr(13) & Chr(10) & Zaehler & ". Versuch von 3 Versuchen"
Exit Sub
Else
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
TempVars.Add "Klarname", globalerBearbeiter
FormularZulassung = Nz(DLookup("FormularZulassung", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
If Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "") = Nz(DLookup("Username", "tabPWUsergruppe_Allg", "Username ='" & NamenSuchstring & "'"), "") Then
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
DoCmd.OpenForm FormularZulassung
DoCmd.Close acForm, "PasswortAbfrage"
End If
End If
End Sub
Wenn sich noch jemand an dem Thema versuchen will, gerne. Mein aktueller Stand liegt im Anhang.
User (Name) PW
user1 user1
user2 user2
user3 user3
sind angelegt.
Ich muß leider passen. Manchmal verliert man halt. :-\
Bedanke mich aber an der Stelle für die super Unterstützung.
Gruss
mad
Hallo,
anbei das angepasste FE. Die Tabellenverknüpfungen musst Du neu erstellen, bzw. anpassen.
Änderungen im Code sind mit '---------------------------- gekennzeichnet.
Im Admin-Form habe ich das Load-Ereignis mit den Visible-Zuweisungen ergänzt.
Die Zähl-Logik für Einlogversuche im Login-Form habe ich nicht weiter analysiert.
Du versinkst vermutlich in den verwirrenden (nicht aussagekräftigen) Benamsungen und übermäßigen Deklarationen der Variablen.
Das Ganze hat sich halt zu schwer durchschaubaren Spagetticode entwickelt.... :)
Wozu eigentlich die dauernden Ver- und Entschlüsselungen?
M.E. reicht es aus, den User (warum den eigentlich verschlüsseln?) und das PW einmalig zu entschlüsseln und Variablen als Klartext zuzuweisen.
De
Hallo Zusammen,
ihr habt doch nochmals einen Ergeiz geweckt. Der "Spagetticode" ist zwar naoch etwas länger geworden, aber es funktioniert jetzt so wie ich es möchte.
Hier nochmals der aktuelle Code:
Private Sub txtpasswort_AfterUpdate()
Dim NamenSuchstring As String
Dim PWSuchstring As String
Dim SQLNamenSuchstring As String
Dim SQLPWSuchstring As String
Dim SQLManager As String
Dim SQLKontrolle As String
Dim SQLEinlesen As String
Dim SQLLogbuch As String
Dim Sql_Loeschen As String
Dim FalschPW As String
Dim txtPW As String
Dim FormularZulassung As String
FalschPW = Nz(Me!txtpasswort, "")
On Error Resume Next
NamenSuchstring = Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
PWSuchstring = Nz(EncodeString(Me!txtpasswort, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
SQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
" AND Username = '" & NamenSuchstring & "'"), "")
Me!txtNeuPW = EncodeString(Me!txtpasswort, _
"A" & "l" & "l" & "e" & Chr(&H20) & _
Chr(Asc("k")) & Chr(Asc("I")) & _
Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l")))
If StrComp(SQLPWSuchstring, Me!txtNeuPW, vbBinaryCompare) = 0 Then
Me!txtLogInStatus = "erfolgreich"
Else
Me!txtLogInStatus = "fehlgeschlagen"
End If
CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus, Klarname ) " & _
" Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtLogInStatus] & "','" & Me![txtKlarname] & "')", dbFailOnError
If SQLPWSuchstring = "" Then
SQLKontrolle = "INSERT INTO tabUserPWKontrolle " & "(Falscheingabe, Zeit) " & "VALUES ('" & FalschPW & "', now)"
CurrentDb.Execute SQLKontrolle
If DCount("[Falscheingabe]", "tabUserPWKontrolle") > 2 Then
SQLEinlesen = "SELECT Falscheingabe, Zeit " & "FROM tabUserPWKontrolle"
SQLLogbuch = "INSERT INTO tabUserPWLogbuch " & "(Falscheingabe, Zeit) " & SQLEinlesen
CurrentDb.Execute SQLLogbuch
MsgBox "Sie hatten 3 Versuche. Leider schliesst die DB jetzt."
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
DoCmd.Quit
End If
Me!PW_Aendern1.SetFocus
Me!txtUsername = ""
Me!txtpasswort = ""
Me!txtUsername.Visible = True
Me!txtUsername.Visible = True
Me!txtpasswort.Visible = False
Dim Zaehler As String
Zaehler = DCount("[Falscheingabe]", "tabUserPWKontrolle")
MsgBox "Das Passwort ist unbekannt!" & Chr(13) & Chr(10) & Zaehler & ". Versuch von 3 Versuchen"
Exit Sub
Else
Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
CurrentDb.Execute Sql_Loeschen
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
TempVars.Add "Klarname", globalerBearbeiter
FormularZulassung = Nz(DLookup("FormularZulassung", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
If Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "") = Nz(DLookup("Username", "tabPWUsergruppe_Allg", "Username ='" & NamenSuchstring & "'"), "") Then
globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
DoCmd.OpenForm FormularZulassung
DoCmd.Close acForm, "PasswortAbfrage"
End If
End If
End Sub
Danke nochmals an alle.
Gruss
mad