[Access] VB Loginscript probleem

Pagina: 1
Acties:

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 17:47
Beste mensen,

Ik ben bezig om een loginscript te maken voor mijn access database. Nou wil ik waarden in twee velden controleren op juiste waarden. Alleen als je een veld controleert moet je er eerst de focus op zetten. Ik heb al onderstaande code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
txt_username.SetFocus
    If txt_username.Text = "" Then
        MsgBox "U dient een gebruiksersnaam op te geven", vbOKOnly, "Inloggen"
    Else
        txt_password.SetFocus
        If txt_password.Text = "" Then
            MsgBox "U dient een password op te geven", vbOKOnly, "Inloggen"
        ElseIf rstLogin.EOF Then
            MsgBox "De gebruikersnaam die u heb ingevult bestaat niet", vbOKOnly, "Inloggen"
        ElseIf rstLogin.Fields(5) <> txt_password.Value Then
            MsgBox "Het password dat u hebt ingevoerd is niet correct", vbOKOnly, "Inloggen"
        Else
            DoCmd.OpenForm "frm_constanten", acNormal, , , acFormEdit, acHidden
            Forms!frm_constanten!const_medewerker_profiel_id = rstLogin.Fields(0)
            Forms!frm_constanten!const_release_id = rstLogin.Fields(0)
            
            DoCmd.Close
            DoCmd.OpenForm "frm_bevinding", acNormal
        End If
    End If


Nou is mijn vraag: kunnen de if-statements zo neergezet worden dat ik de focus niet steeds op een veld hoef neer te zetten en zodat de code er netter uit komt te zien? Ik heb ook al geprobeerd om alle if ... then ... statements achter elkaar te zetten maar dat werkt niet goed want dan krijg ik achter elkaar door de foutmeldingen.

Carpenter

P.S als iemand ook nog weet hoe ik deze login case-sensitive kan maken want daar heb ik voor Access VB niets over gevonden.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:59

gorgi_19

Kruimeltjes zijn weer op :9

P.S als iemand ook nog weet hoe ik deze login case-sensitive kan maken want daar heb ik voor Access VB niets over gevonden.
strcomp()

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Wat betreft de focus: gebruik niet de .text property. Hierdoor moet steeds de focus op je veld komen. Als het goed is hoeft dat niet meer als je 'gewoon' txt_username aanspreekt in plaats van txt_username.Text

Edit:
Case sensitivity kan uiteraard ook door de juiste Option Compare te gebruiken. Zie ook de uitleg op MSDN

[ Voor 40% gewijzigd door OZ-Gump op 10-10-2003 10:32 ]

My personal website


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 17:47
OZ-Gump schreef op 10 October 2003 @ 09:39:
Wat betreft de focus: gebruik niet de .text property. Hierdoor moet steeds de focus op je veld komen. Als het goed is hoeft dat niet meer als je 'gewoon' txt_username aanspreekt in plaats van txt_username.
ja maar dan gaat hij niet kijken wat de waarden zijn in het veld en dat moet wel

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Carpenter schreef op 10 October 2003 @ 10:23:
[...]
ja maar dan gaat hij niet kijken wat de waarden zijn in het veld en dat moet wel
Ik heb hier een form met twee textboxen. text0 en text1. Verder staat er een knop op. Onder de onClick heb ik de volgende regel code staan:
Visual Basic:
1
  MsgBox Text0
Wanneer ik het form draai en ik typ wat in Text0, zet vervolgens de cursor in Text1 en ik klik op de knop, dan krijg ik keurig te zien wat ik in Text0 heb getypt. En Text0 heeft dus niet de focus (ook niet na het klikken)

Oftewel: jawel, dan kijkt hij wel degelijk naar de waarde die de textbox heeft.

My personal website


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 17:47
Maar hij zal dan misschien niet kunnen vergelijken want als ik de volgende code gebruik:
code:
1
2
3
If txt_password = "" Then
    MsgBox "U dient een password op te geven", vbOKOnly, "Inloggen"
End If

Dan gebeurt er helemaal niets

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Dat klopt, omdat txt_password niet gelijk is aan "" (en al helemaal niet een aan spatie), maar aan null. Probeer het volgende stukje code maar eens:
 
Visual Basic .NET:
1
2
3
If IsNull(txt_password) Then
    MsgBox "U dient een password op te geven", vbOKOnly, "Inloggen"
End If

Enne... voortaan niet meer zo snel roepen dat iets niet werkt he ;)

[ Voor 19% gewijzigd door OZ-Gump op 10-10-2003 11:05 ]

My personal website


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 17:47
OZ-Gump schreef op 10 October 2003 @ 11:04:
Enne... voortaan niet meer zo snel roepen dat iets niet werkt he ;)
Ik zal het nooit meer doen O-) In ieder geval dank je wel :9~

Het probleem is opgelost _/-\o_

Voor degenen die mijn nieuwe code willen zien
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
If IsNull(txt_username) Then
        MsgBox "U dient een gebruikersnaam in te vullen!", vbCritical, "Inlogfout"
        txt_username.SetFocus
ElseIf IsNull(txt_password) Then
        MsgBox "U dient een password in te vullen!", vbCritical, "Inlogfout"
        txt_password.SetFocus
ElseIf (rstLogin.RecordCount = 0) Then
        MsgBox "De gebruikersnaam die u hebt ingevuld bestaat niet!", vbCritical, "Inlogfout"
        txt_username.SetFocus
ElseIf (StrComp(rstLogin.Fields(4), txt_username, 0) = -1) Then
        MsgBox "De gebruikersnaam die u hebt ingevuld bestaat niet!", vbCritical, "Inlogfout"
        txt_username.SetFocus
ElseIf (StrComp(rstLogin.Fields(5), txt_password, 0) = -1) Then
        MsgBox "Het password dat u hebt ingevuld bestaat niet!", vbCritical, "Inlogfout"
        txt_password.SetFocus
ElseIf rstLogin.Fields(5) <> txt_password.Value Then
        MsgBox "Het password dat u hebt ingevoerd is niet correct", vbOKOnly, "Inloggen"
        txt_password.SetFocus
Else
        DoCmd.OpenForm "frm_constanten", acNormal, , , acFormEdit, acHidden
        Forms!frm_constanten!const_medewerker_profiel_id = rstLogin.Fields(0)
        Forms!frm_constanten!const_release_id = rstLogin.Fields(0)
            
        DoCmd.Close
        DoCmd.OpenForm "frm_bevinding", acNormal
End If

[ Voor 76% gewijzigd door Carpenter op 10-10-2003 11:40 ]

Pagina: 1