collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 60
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13996
  • stats Beiträge insgesamt: 66787
  • stats Themen insgesamt: 9006
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Funktionierende Login Maske bis auf Prüfung ob Feld leer ist, das geht nicht ...  (Gelesen 2520 mal)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 568
    • Quartettportal
Hallo,
ich habe ein Loginformular. Das passt soweit, sprich es prüft ob Passwort übereinstimmt für den User, ob der User selbst existiert, alles gut soweit. Beiläufig viel mir dann auf, dass wenn ich einen User eintrage und ich return drücke der Login ohne Passwort geht  :-[. Den Code dafür habe ich mal vor längerer Zeit über ein YT-Video gefunden und integriert. Wie macht man das bzw. wie muss man den Code ergänzen, damit er ein leeres Passwortfeld NICHT akzeptiert?? Hier der aktuelle Code.
Private Sub cmdLogin_Click()
    Dim rs As Recordset
   
    Set rs = CurrentDb.OpenRecordset("tblBenutzer", dbOpenSnapshot, dbReadOnly)
   
    rs.FindFirst "UserID='" & Me.txtBenutzername & "'"
   
    If rs.NoMatch = True Then
        Me.lblFalscherBenutzer.Visible = True
        Me.txtBenutzername.SetFocus
        Exit Sub
    End If
    Me.lblFalscherBenutzer.Visible = False
   
    If rs!Passwort <> Me.txtPasswort Then
        Me.lblFalschesPasswort.Visible = True
        Me.txtPasswort.SetFocus
        Exit Sub
    End If
    Me.lblFalschesPasswort.Visible = False
   
    DoCmd.OpenForm "frmMenueseite"
    DoCmd.Close acForm, "frmLogin"

End Sub

Für Hilfe diesbezüglich wäre ich dankbar.
Grüße und Dank im voraus
Andreas
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

vielleicht hilft:
If rs!Passwort <> nz(Me.txtPasswort, "") or nz(Me.txtPasswort, "") = "" Then   'abbrechen

Ist sichergestellt, dass die Sub "cmdLogin_Click" überhaupt aufgerufen wird?

Harald
Servus
 

Offline Xoar

  • Access-Profi
  • **
  • Beiträge: 401
Moin, jetzt mal auf die schnelle..

If rs!Passwort <> Me.txtPasswort or IsNull(me.TxtPasswort) Then
Könnte man auch über eine Gültigkeitsregel des Feldes realisieren.

Hoffe kannst was mit anfangen.

Grüße
 
Folgende Mitglieder bedankten sich: derilzemer

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1261
... und wenn man statt auf Ungleichheit auf Gleichheit prüft, was ja eigentlich der Logik der Anforderung entspricht, entfällt auch die Besonderheit bei Null-Werten. :)
Grüße von der (⌒▽⌒)
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

ich vermute mal, dass ein weiteres Problem entstehen kann, wenn grosse und kleine Buchstaben im Kennwort zu unterscheiden sind.

Hier könnte StrComp helfen.

Harald
Servus
 
Folgende Mitglieder bedankten sich: derilzemer

Offline markus888

  • Access-Profi
  • **
  • Beiträge: 198
Ich würde das Click Event erst ermöglichen, wenn Benutzername und Passwort ausgefüllt sind.
Im After Update Event von beiden würde ich folgende Methode ausführen.
sub LoginEnable()
    cmdLogin.Enabled = Len(Nz(Me.txtBenutzername)) > 0 And Len(Nz(Me.txtPasswort)) > 0
end sub

Dann ist sichergestellt, dass der restliche Code einwandfrei funktioniert.
10 Jahre Access
 
Folgende Mitglieder bedankten sich: derilzemer

Offline Joss

  • Access-User
  • *
  • Beiträge: 80
Hallo Andreas,

If rs!Passwort <> Nz(Me.txtPasswort) Then
oder der Vorschlag von Lachtaube.

Gruß
Josef
Meine Suchmaschine: www.fireball.de | Access-Wiki: www.dbwiki.de
 
Folgende Mitglieder bedankten sich: derilzemer

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 568
    • Quartettportal
Hallo zusammen,
vielen Dank für die Info und Hilfe. Ich habe mich für die Lösung vom Markus entschieden, auf beide Textfelder das After_Update Ereignis zu nutzen. Das funktioniert auch tadellos. Ich frage mich nur, ob dies sinnvollerweise auf den Loginbutton gelegt werden kann/sollte, dass beim klicken geprüft wird, ob die beiden Textfelder befüllt sind (zwecks Übersicht). Da ich aber VBA mäßig total abhängig bin was die Hilfe angeht, bin ich mit der Lösung aber vollauf zufrieden und würde den Teufel tun mich zu beschweren :).
Vielen Dank noachmal

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1261
Jeder, der an Dein Backend kommt, kann z. Bsp. mit Excel alle Benutzernamen und Passworte im Klartext (auch ohne VBA-Kenntnis) auslesen. Da fragt man sich natürlich nach der Sinnhaftigkeit solcher Konstrukte schlechthin.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: derilzemer

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1816
Re: Funktionierende Login Maske bis auf Prüfung ....
« Antwort #9 am: Januar 18, 2018, 16:37:02 »
Hallo Andreas,

Private Sub cmdLogin_Click()
    Dim rs As Recordset
   
    Set rs = CurrentDb.OpenRecordset("tblBenutzer", dbOpenSnapshot, dbReadOnly)

    If Nz(Me.txtBenutzername, "") = "" OR Nz(Me.Passwort, "") = "" Then
        Msgbox "Beide Felder müssen ausgefüllt sein!"
    Else
        rs.FindFirst "UserID='" & Me.txtBenutzername & "'"
        'dein weiterer Code
    End if

End Sub

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: derilzemer

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7317
Hallo,
und auch noch mal den Hinweis, dass ein einfacher Textvergleich nicht zwischen Groß und Kleinbuchstaben unterscheidet.

Passwort = PASSWORT = passwort = PassWort

Ist das gewollt ?
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: derilzemer

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

noch mal den Hinweis, dass ein einfacher Textvergleich nicht zwischen Groß und Kleinbuchstaben unterscheidet.
Passwort = PASSWORT = passwort = PassWort

Lösungsvorschlag gibt es in #4

Harald
Servus
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 568
    • Quartettportal
Hallo,
sorry erst mal, dass ich vorhin
Zitat
....ich frage mich nur, ob dies sinnvollerweise auf den Loginbutton gelegt werden kann/sollte, dass beim klicken geprüft wird.....
erwähnt habe. Das war unüberlegt, da natürlich alle anderen Antworten mehr oder weniger genau das ja vorgeschlagen haben. Markus hatte ja nur eine andere Vorgehensweise vorgeschlagen. Also sorry for that, war mal wie so oft unüberlegt geantwortet :(.
@Klaus
Zitat
und auch noch mal den Hinweis, dass ein einfacher Textvergleich nicht zwischen Groß und Kleinbuchstaben unterscheidet.
Passwort = PASSWORT = passwort = PassWort
Ist das gewollt ?
Nein Klaus, das ist natürlich nicht gewollt, das war eben nicht in dem "gefundenen" Code inkludiert.
@bahasu
Zitat
Lösungsvorschlag gibt es in #4
Wie du selbst gelesen hast, habe ich den Code "gefunden", angepasst soweit ich konnte und wusste und dann verwendet. strcomp "einbauen" wird wohl eher schwierig bis unmöglich für mich, muss ich zugeben  :(.
@Ekkehard
danke für den "genauen" Integrationshinweis bezüglich Prüfung über den Loginbutton.
@Lachtaube
Zitat
Jeder, der an Dein Backend kommt, kann z. Bsp. mit Excel alle Benutzernamen und Passworte im Klartext (auch ohne VBA-Kenntnis) auslesen. Da fragt man sich natürlich nach der Sinnhaftigkeit solcher Konstrukte schlechthin.
Danke für deinen Hinweis, auch wenn ich jetzt nicht weiß wie ich das wiederum "vermeiden" könnte :(.

Gruß Andreas

Grüße und Dank im voraus
Andreas
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

strcomp "einbauen" wird wohl eher schwierig bis unmöglich für mich, muss ich zugeben  :(.

da bin ich aber optimistischer: Das schaffst Du!  :)
Aus der access-Hilfe folgt zum Aufruf: StrComp(string1, string2[, compare])

Für "compare" setzt Du ein: "vbBinaryCompare" ' 0 Führt einen binären Vergleich durch.

Als Ergebnis dieser Funktion erhältst Du:
0 ' => string1 entspricht string2
Daneben gibt es noch -1 und +1 und Null als mögliches Ergebnis: Versuch macht kluch.  ;)

Harald

Servus
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

Danke für deinen Hinweis, auch wenn ich jetzt nicht weiß wie ich das wiederum "vermeiden" könnte :(.

Da ich die Vorzüge eher in access2003 als in a2016 sehe, kann ich mir nicht verkneifen, dass winzigweich in dem alten Programm das Berechtigungskonzept hat, das genau regelt, wer was darf. Ob das ein für Dich nutzbarer Weg ist, kannst nur Du entscheiden.

Harald


PS
Bitte vermeide zukünftig einen zu langen Titel.
Zumindest bei mir erscheint beim Speichern eines Beitrags immer eine Fehlermeldung, dass der Titel zu lang ist.
Servus
 
Folgende Mitglieder bedankten sich: derilzemer