[Access] formulaire login!!

Xtofer Messages postés 84 Statut Membre -  
 scarpe -
Salut a tous, je suis entrain de faire une basse de données en access et j'aimerai inclure un formulaire qui ferait office de logon...........donc j'ai crée un formulaire et placé deux zones de texte (et un bouton connecter)......une pour le username et une autre pour le password.......mais apres je ne sais pas quoi faire... ..pour dire d'aller verifier les 2entrées vers la table des utilisateurs (la plusieurs champ on été crée, username et password forcement mais aussi , nom , prénom, bureau , etc)......cette table na aucun lien avec le reste des autres tables puisque je l'ai crée juste pour la phase de login........doit-je utilisé du code VB, une macro, du code d'access...............je c'est vraiment pas!!!

Si vous pouviez m'aider, ca serait vraiment sympa
Je vous remerci pour vos futur réponses.

bien à vous
Xtofer

7 réponses

blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

supposons que tu aies deux zones de texte : Z_User, Z_Pass qui sont là pour récupérer la saisie des infos, et que tu as une table User qui contient les user et mots de passe associés, ça pourrait ressembler à ça (code à mettre sur un bouton qui s'appelerait 'valider, propriété 'sur clic'') :
Dim Rs As Recordset
Dim Reconnu as Boolean
Reconnu = False
Set Rs = CurrentDb.OpenRecordset("User")
Do While Not Rs.EOF
    If Rs.Fields("User").Value = Z_User.value Then
        If Rs.Fields("Pass").Value = Z_Pass.Value
            MsgBox "Ok"
            Reconnu = True
            Exit Do
        Else
            Msgbox "Erreur de mot de passe"
            GoTo Fin
        End If
    End If
    Rs.MoveNext
Loop
If Reconnu = False Then
    MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention.."
    GoTo Fin
End If
'Traitement suivants
Fin:
3
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,
Ben sur ton formulaire tu fais un bouton "login" et avec du code VBA derrière tu cherches le login dans la base, tu encodes le mot de passe, et tu vérifies que c'est la valeur attendue...
3
Xtofer Messages postés 84 Statut Membre 17
 
A mon avis la avec ca je m'en rapproche.......seulement, il y a apparement une erreur lors de la compilation:

Erreur d'execution '13'
Incompatibilité de type

Je pense pourtant avoir bien retransposé le nom de la table et du formulaire; mes 2 zones de textes s'appelent:
"Z_User"
"Z_Pass"
Ma table se nomme : "Table Utilisateur" et comporte les champ "Username" et "Password"
Mon formulaire s'appelent quand a lui : "Formulaire Logon"

Private Sub Connecter_Click()
Dim Rs As Recordset
Dim Reconnu As Boolean
Reconnu = False
Set Rs = CurrentDb.OpenRecordset("Table Utilisateur")
Do While Not Rs.EOF
If Rs.Fields("Username").Value = Z_User.Value Then
If Rs.Fields("Password").Value = Z_Pass.Value Then
MsgBox "Ok"
Reconnu = True
Exit Do
Else
MsgBox "Erreur de mot de passe"
GoTo Fin
End If
End If
Rs.MoveNext
Loop
If Reconnu = False Then
MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention.."
GoTo Fin
End If
'Traitement suivants
Fin:
End Sub

Ou est le probleme???
Encore merci pour ta réponse
2
Xtofer Messages postés 84 Statut Membre 17
 
A noter qu'il me surligne en jaune cette instruction lors du débogage:

Set Rs = CurrentDb.OpenRecordset("Table Utilisateur")
0
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Supprime la définition du type recorset pour rs...

Mets Dim rs (ça le forcera en type variant).

Ou regarde s'il ne manque pas une référence à DAO dans le menu outils/réference lors de la compilation.
0
Xtofer Messages postés 84 Statut Membre 17
 
C'est assez bizar...........Dans Outils/références; Microsoft D.A.O 3.6 Object Library n'était pas coché..........c'est maintenant fait........mais ca foire toujours!..........j'ai essayé de retiré le recordset :
Set Rs = CurrentDb.Open("Table Utilisateur")

en mettant également dim rs en var:
Dim Rs As Variant

Mais la , il me met :
Erreur de compilation, Membres de méthode ou de données introuvable
Puis il me souligne en jaune : Private Sub Connecter_Click()
et prend en selection (bleu) le Open de : Set Rs = CurrentDb.Open("Table Utilisateur")


Bizar, de chez bizar...........je c meme pas ou cherché en plus
0
Xtofer Messages postés 84 Statut Membre 17
 
bhé le bouton est crée, c'est justement le code a placé derriere que je ne connais pas...........j'aurai du précisé que je suis débutant dans access Et dans la programmation!!! pleazzzz heeeelp!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xtofer Messages postés 84 Statut Membre 17
 
Nikel!!!!! ca marche! enfin, ca fonctionne!!..........fallait gardé le recordset pour rs met le metre en variant..........ca a l'air encore plus bizar mais pas grave du moment que ca tourne..............Ca sert a quoi D.A.O ???.................Encore gros merci pour tous!!!!
Je dois y allé sinan je vais raté mon train
thx a lot
++
Xtofer
0
Xtofer Messages postés 84 Statut Membre 17
 
En faite ton premier code était tres bon il manquait juste DAO devant le recordset de cette instruction :

Dim Rs As DAO.Recordset

sinan ca marche tres bien..............merci a toi blux

Xtofer
0
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Ben voui, mais comme je ne sais jamais à l'avance si DAO est installé sur une machine (et en quelle version), je fais mettre en variant, comme ça, plus d'erreur de type, si ça marche, on investigue vers DAO et toute la clique...

Ravi de t'avoir aidé...
0
Leyley39
 
Bonjour

j'ai utlisé votre code pour créer un formulaire logon. Mais il m'indique qu'il manque un Do à la loop. J'ai pourtant repris votre code exacte :

Private Sub Entrerr_Click()

Dim Rs As DAO.Recordset
Dim Reconnu As Boolean
Reconnu = False
Set Rs = CurrentDb.OpenRecordset("PRO SMAEC")
Do While Not Rs.EOF
If Rs.Fields("NOM UTILISATEUR").Value = Modifiable4.Value Then
If Rs.Fields("CODE ACCES").Value = CODE_ACCES.Value Then
MsgBox "Ok"
Reconnu = True
Exit Do
Else
MsgBox "Erreur de mot de passe"
GoTo Fin
End If
Rs.MoveNext
Loop
If Reconnu = False Then
MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention..."
GoTo Fin
End If
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Menu Général "
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Entrerr_Click:
Exit Sub

Err_Entrerr_Click:
MsgBox Err.Description
Resume Exit_Entrerr_Click

Fin:

End Sub

Où est mon erreur ?

Merci de votre aide
0
scarpe
 
Bonjour

j'ai lu votre post sur le forum, et j'ai le même problème "boucle sans do"
avez vous trouvé la solution?
0
blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention   3 367 > scarpe
 
je viens de jeter un œil, il y a deux IF dans la boucle mais un seul END IF, donc ça coince...
0
scarpe > blux Messages postés 27997 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci pour ton aide

j'ai trouvé ce code sur le forum qui fonctionne bien :

Private Sub Commande6_Click()



Me.Requery

Dim sql As String
Dim rs As DAO.Recordset

Static i As Byte

sql = "SELECT matable.user,matable.password FROM matable WHERE matable.user = '" & Me.txtuser & "' AND matable.password ='" & Me.txtpassword & "';"

Set rs = CurrentDb.OpenRecordset(sql)

If Not rs.EOF Then

DoCmd.OpenForm "Menu ", acNormal, , , , acWindowNormal

DoCmd.Close acForm, "identification "


Else

MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"

i = i + 1

End If

If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If
End Sub
0