Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Login Prüfung

Begonnen von Mamba4711, Juni 13, 2016, 23:04:50

⏪ vorheriges - nächstes ⏩

Mamba4711

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

MaggieMay

#1
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 Sub


BTW:
Was sind das für "Zugriffs"-Variablen? Sind sie global definiert?


{Edit: "Else If" -> "ElseIf"}
Freundliche Grüße
MaggieMay

DF6GL

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

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

Mamba4711

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

Mamba4711

>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

MaggieMay

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".
Freundliche Grüße
MaggieMay

MaggieMay

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.
Freundliche Grüße
MaggieMay

DF6GL

Zitatnicht unbedingt mehrdeutig, aber zumindest nicht eindeutig
::)

könnte dann ja "undeutig" sein...  :P
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