[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

  1. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
  2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    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
  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
    1. 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
    2. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
    3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
    1. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
  8. 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
    1. 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
      1. blux Messages postés 2058 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > scarpe
         
        je viens de jeter un œil, il y a deux IF dans la boucle mais un seul END IF, donc ça coince...
        0
      2. scarpe > blux Messages postés 2058 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