Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Logon-Formular mit Kennwortabfrage versehen

Begonnen von lutschi83, März 30, 2015, 15:13:17

⏪ vorheriges - nächstes ⏩

lutschi83

Hallo Leute,

ich habe ein Formular mit einem Kombi-Feld SELECT [ID], [Mitarbeitername], [Position] FROM [Erweitertes Personal] ORDER BY [Mitarbeitername];
Ein Ungebundenes Textfeld (Kennwort).

Nun habe ich in der Abfrage [Erweitertes Personal] noch das Feld "Kennwort"

Wie bekomme ich hin, dass das Formular "Start" gestartet wird, wenn Mitarbeitername und Kennwort übereinstimmen?

Danke für eure Hilfe!

MaggieMay

So sollte das klappen:

Private Sub Kennwort_AfterUpdate()
    If Me!Kennwort = DLookUp("Kennwort","Erweitertes Personal]","ID=" & Me!cboMitarbeiter) Then
        DoCmd.OpenForm "Start"
    Else
        MsgBox "Kennwort ungültig!"
    End If
End Sub
Freundliche Grüße
MaggieMay

DF6GL

Hallo,


bei Passwort-Prüfungen rate ich zur Verwendung der Funktion StrComp(), die auf binären Vergleich eingestellt werden kann und damit auch Groß-/Kleinbuchstaben unterscheidet.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

lutschi83

Danke Maggie, dein Code funktioniert super.
Wie kann ich die Funktion "StrComp" einbauen?
Und habt ihr vielleicht eine Idee, wie ich dem User bei der ersten Anmeldung das Passwort ändern lassen kann?

Vielen Dank für eure Vorschläge bzw. für eure Hilfe!

DF6GL

Hallo,
Zitat
Wie kann ich die Funktion "StrComp" einbauen?

einfach mal in die VBA-Hilfe schauen..
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

Zitathabt ihr vielleicht eine Idee, wie ich dem User bei der ersten Anmeldung das Passwort ändern lassen kann?
Dazu könntest du einen Button hinzufügen der zwei Eingabefelder zum Ändern einblendet oder ein PopUp-Formular zu diesem Zweck öffnet.
Freundliche Grüße
MaggieMay

lutschi83

Also ich hab jetzt ein Formular erstellt, mit drei Textfeldern.
pwdcurrent, pwdnew und pwdconfirm.
Dazu noch einen ok-button und einen cancel-button.

Wie muss der Code jetzt aussehen, wenn auf dem Formular vorher folgendes geschieht:
Private Sub cmdLogin_Click()
    If Me!Kennwort = DLookup("Kennwort", "[Erweitertes Personal]", "ID=" & Me!cboCurrentEmployee) Then
        DoCmd.OpenForm "Start"
        DoCmd.Close acForm, "logon"
        DoCmd.Close acForm, "startbildschirm"
    Else
        MsgBox "Wrong Password! Try again!"
    End If
End Sub


Sorry, aber ich bin Anfänger in VB...

lutschi83

Hallo,
also das Popup-Formular bekomme ich schon mal angezeigt,
wie kann ich nun vergleichen, ob pwdcurrent = aktuelles Passwort ist?
Und wie kann ich das neue pwdnew und pwdconfirm abgleichen und in die Tabelle personal schreiben lassen?

Danke schon einmal für eure Hilfe!!!

MaggieMay

Hallo,

wie du das eingegebene Passwort mit dem gespeicherten Passwort vergleichen kannst, siehst du doch in dem Code, den du gestern gepostet hast. Zum Speichern des neuen Passworts kannst du eine Aktualisierungsabfrage einsetzen oder per Recordset auf die Tabelle zugreifen.
Freundliche Grüße
MaggieMay

lutschi83

Hallo,
ich habe mich mal versucht, doch irgendwie funktioniert dass leider nicht, so wie ich mir das vorstelle.
Private Sub Befehl6_Click()
Dim db As DAO.Database
     Dim rs As DAO.Recordset

     Set db = Application.CurrentDb
     Set rs = db.OpenRecordset("Personal")
   
    If IsNull(Me!pwdcurrent) Then MsgBox "Please insert current Password!", vbCritical, "Caution!" Else
   
    If IsNull(Me!pwdnew) Then MsgBox "Please insert a new Password!", vbCritical, "Caution!" Else
   
    If Nz(Me!pwdnew) <> Nz(Me!pwdconfirm) Or Len(Me!pwdnew) < 4 Then MsgBox "New Password does not match to confirmation!", vbCritical, "Caution!"

   
   If Me!pwdcurrent <> DLookup("Kennwort", "[Erweitertes Personal]", "ID=" & Me!cboCurrentEmployee) Then MsgBox "Wrong current Password!" Else
   rs.Fields("Kennwort") = Me!pwdnew
     
   DoCmd.Close acForm, "PWDCHANGE"

End Sub


Ich muss doch noch irgendwie eine Prüfung einbauen, welcher Benutzer sein Kennwort gerade ändert, oder und das Formular "PWDCHANGE" schließt sich leider nicht...


MaggieMay

Hallo,

so könnte da schon eher was draus werden:
Private Sub Befehl6_Click()
    Dim rs As DAO.Recordset

    Set rs = CurrentDB.OpenRecordset("Select * From Personal Where ID=" & Me!cboCurrentEmployee)
    If rs.EOF Then
        rs.Close
        MsgBox "Please choose current Employee!"
        Exit Sub
    End If
    If IsNull(Me!pwdcurrent) Then
        MsgBox "Please insert current Password!", vbCritical, "Caution!"
    ElseIf IsNull(Me!pwdnew) Then
        MsgBox "Please insert a new Password!", vbCritical, "Caution!"
    ElseIf Nz(Me!pwdnew) <> Nz(Me!pwdconfirm) Or Len(Me!pwdnew) < 4 Then
        MsgBox "New Password does not match to confirmation!", vbCritical, "Caution!"
    ElseIf Me!pwdcurrent <> DLookup("Kennwort", "[Erweitertes Personal]", "ID=" & Me!cboCurrentEmployee) Then
        MsgBox "Wrong current Password!"
    Else
        rs.Edit
        rs.Fields("Kennwort") = Me!pwdnew
        rs.Update
        DoCmd.Close acForm, Me.Name
    End If
    rs.Close
End Sub
Freundliche Grüße
MaggieMay

lutschi83

Hallo,

leider funktioniert der Code nicht. Liegt es daran, dass ich das aus einem Pop-Up-Fenster machen will?
Sprich, wenn ich auf "Kennwort ändern" klicke, dann erscheint ein Pop-Up-Fenster, auf dem die Felder mit den Passwortänderungen sind.

Hat jemand eine Idee, wie ich dass besser händeln kann?

Danke schon einmal im Voraus!

lutschi83

Hab es selbst hinbekommen!
Hab die Kombibox kopiert und nicht sichtbar eingefügt.
Jetzt funktioniert es!