Anmeldeformular

  • VB6

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Unknown.

    Anmeldeformular

    Hallo, ich hab gerade mit VB angefangen.
    Jetzt versuche ich ein Anmeldeformular zu programmieren, das je nach Benutzername ein anderes Formular startet. Leider sagt der Debugger, dass ein If-Block ohne End If da wäre, aber ich finde keinen.

    Außerdem würde ich eine später eine SQL- Anbindung mit womöglich automatisch erstellter Tabelle von den Benutzern der Domäne und deren Passwörtern planen. Vielleicht könnt ihr mir dabei helfen.

    Hier erstmal fürs Formular:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Public Rights As Integer
    3. Public LoginSucceeded As Boolean
    4. Public angemeldet As Boolean
    5. Private Sub cmdCancel_Click()
    6. 'Globale Variable auf False setzen,
    7. 'um eine fehlgeschlagene Anmeldung zu kennzeichnen.
    8. LoginSucceeded = False
    9. Me.Hide
    10. End Sub
    11. Private Sub cmdOK_Click()
    12. 'Rechte nach Benutzername setzen
    13. If txtUserName = "Lehrer" Then
    14. Rights = 1
    15. If txtUserName = "Schueler" Then
    16. Rights = 2
    17. Else
    18. MsgBox "Ungültiger Benutzername. Bitte versuchen Sie es noch einmal!", , "Anmeldung"
    19. txtUserName.SetFocus
    20. SendKeys "{Home}+{End}"
    21. End If
    22. 'Auf korrektes Kennwort überprüfen
    23. If txtPassword = "pass" And Rights > 0 Then
    24. LoginSucceeded = True
    25. rightsloader.Module_Load
    26. Me.Hide
    27. Else
    28. MsgBox "Ungültiges Kennwort. Bitte versuchen Sie es noch einmal!", , "Anmeldung"
    29. txtPassword.SetFocus
    30. SendKeys "{Home}+{End}"
    31. End If
    32. End Sub


    Und dann für das Modul zum Weiterleiten (Modulname:"rightsloader"):


    Visual Basic-Quellcode

    1. Option Explicit
    2. Public Rights As Boolean
    3. Public Sub Module_Load()
    4. If Rights = 1 Then
    5. LSCOLS.Show
    6. End If
    7. If Rights = 2 Then
    8. SSCOLS.Show
    9. End If
    10. End Sub



    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Jetzt weiß ichs, aber das Formular lädt es trotzdem nicht:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Public Rights As Integer
    3. Public LoginSucceeded As Boolean
    4. Public angemeldet As Boolean
    5. Private Sub cmdCancel_Click()
    6. 'Globale Variable auf False setzen,
    7. 'um eine fehlgeschlagene Anmeldung zu kennzeichnen.
    8. LoginSucceeded = False
    9. Me.Hide
    10. End Sub
    11. Private Sub cmdOK_Click()
    12. 'Rechte nach Benutzername setzen
    13. If txtUserName = "Lehrer" Then
    14. Rights = 1
    15. ElseIf txtUserName = "Schueler" Then
    16. Rights = 2
    17. Else
    18. MsgBox "Ungültiger Benutzername. Bitte versuchen Sie es noch einmal!", , "Anmeldung"
    19. txtUserName.SetFocus
    20. SendKeys "{Home}+{End}"
    21. End If
    22. 'Auf korrektes Kennwort überprüfen
    23. If txtPassword = "pass" And Rights > 0 Then
    24. LoginSucceeded = True
    25. Me.Hide
    26. rightsloader.Module_Load
    27. Else
    28. MsgBox "Ungültiges Kennwort. Bitte versuchen Sie es noch einmal!", , "Anmeldung"
    29. txtPassword.SetFocus
    30. SendKeys "{Home}+{End}"
    31. End If
    Hey Ludwig,

    ich weiß nicht, ob Du Deinen Fehler inzwischen gefunden hast, aber hier ein Vorschlag, der ganz bestimmt funktioniert:

    Visual Basic-Quellcode

    1. Private Sub cmdOK_Click()
    2. Dim sMsg$
    3. sMsg = "Ungültiger Benutzername" ' Von ungültigem Benutzernamen ausgehen
    4. If CheckUsername > 0 Then ' Ist aber nicht; deswegen...
    5. sMsg = "Ungültiges Kennwort" ' Von ungültigem Kennwort ausgehen
    6. If CheckPassword Then ' Ist aber nicht; deswegen...
    7. LoginSucceeded = True
    8. rightsloader.Module_Load
    9. Me.Hide
    10. Exit Sub ' Da alles OK, aussteigen!
    11. End If
    12. End If
    13. ' sonst...
    14. MsgBox sMsg & ". Bitte versuchen Sie es noch einmal!", , "Anmeldung"
    15. SendKeys "{Home}+{End}"
    16. End Sub
    17. Private Function CheckUsername()
    18. txtUserName.SetFocus
    19. Select Case txtUserName.Text
    20. Case "Lehrer": CheckUsername = 1
    21. Case "Schueler": CheckUsername = 2
    22. Case Else: CheckUsername = 0
    23. End Select
    24. End Function
    25. Private Function CheckPassword()
    26. txtPassword.SetFocus
    27. CheckPassword = (txtPassword.Text = "pass")
    28. End Function


    Wie Du siehst, würde ich die Überpüfung in zwei getrennten Funktionen vornehmen; für die Auswertung gibt es dann ja mehrere Möglichkeiten.
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.
    Das Problem ist die Verwendung von selben
    Variablennamen in unterschiedlichen Gültigkeits-
    bereichen. Du deklarierst Rights einmal in dem
    Modul und einmal in deiner Form. Die in dem
    Modul deklarierte Variable ist im ganzen Projekt
    sichtbar, die in der Form deklarierte Variable nur
    innerhalb der Form.

    Du darfst die Variable also nur in einem der beiden
    Module deklarieren. Deklarierst du sie in der Form,
    musst du im Modul über Formular.Rights auf die
    Variable zugreifen:

    Quellcode

    1. Public Sub Module_Load()
    2. If Formularname.Rights = 1 Then
    3. LSCOLS.Show
    4. Else
    5. SSCOLS.Show
    6. End If
    7. End Sub


    Deklarierst du die Variable nur im Modul, kannst
    du den restlichen Code unverändert lassen.