IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

parcourir un recordset [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut parcourir un recordset
    bonjour,
    J'ai une petite question : pour exécuter une action je veux parcourir le champ d'une table, le problème c'est que le code ne lit seulement que le dernier enregistrement. Comment faire pour qu'il parcoure toutes lignes afin de trouver la bonne donnée. Voici le code que j'ai effectué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    Public Sub essai_AfterUpdate()
    Dim dbsdepart As Database
    Dim rstdepart As Recordset
    Dim test As String
    Set dbsdepart = CurrentDb
    Set rstdepart = dbsdepart.OpenRecordset("TableAutorisationTemporaire", dbOpenDynaset)
     
    test = rstdepart("nomAutorisation")
     
    While (Not rstdepart.EOF)
     
           With rstdepart
            test = !nomAutorisation
             rstdepart.MoveNext
           End With
     
        If StrComp(Me.essai, test, vbTextCompare) = 0 Then
        MsgBox "acces accepté"
        Call macro10
           Else
           MsgBox " acces interdit"
        End If
    Wend
     
    rstdepart.Close
    dbsdepart.Close
    'Set rstdepart = Nothing
    End Sub
    merci pour votre aide

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Public Sub essai_AfterUpdate()
    Dim dbsDepart As DAO.Database
    Dim rstDepart As DAO.Recordset
    Dim Test As String
     
    Set dbsdepart = CurrentDb
    Set rstdepart = dbsdepart.OpenRecordset("TableAutorisationTemporaire", dbOpenDynaset)
     
    test = rstdepart("nomAutorisation")
     
    While Not rstdepart.EOF
        test = rstdepart.fields("nomAutorisation").value
        If StrComp(Me.essai, test, vbTextCompare) = 0 Then
            MsgBox "Accès accepté"
            Call macro10
        Else
           MsgBox "Accès interdit"
        End If
        rstDepart.movenext
    Wend
    rstdepart.Close
    Set rstdepart = Nothing
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    merci beaucoup mais maintenant il ne va plus lire la derniere ligne d'enregistrement mais 1 seule ligne au hasard,et toute les autre il les refusent.
    pour info test est un liste deroulante

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Et quand tu exécutes pas à pas, il se passe quoi ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    SI JE RENTRE A il me renvoi le message acces accepté et 2 messages acces refusé si je rentre B il me renvoi un premier message acces refuse et apres il me dit acces accepté et un message acces refusé
    si je rentre C il me renvoi 2 messages acces refusé et 1 message acces accepté

    ci joint la table
    Fichiers attachés Fichiers attachés

  6. #6
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut
    Bonjour.
    Peut-être peux-tu ajouter en début de procédure les deux lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    test = rstdepart("nomAutorisation")
    rstdepart.MoveLast
    rstdepart.MoveFirst
    ...
    De mémoire, je crois que c'est recommandé dans la FAQ .
    Cordialement.

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Citation Envoyé par chuspyto Voir le message
    SI JE RENTRE A il me renvoi le message acces accepté et 2 messages acces refusé si je rentre B il me renvoi un premier message acces refuse et apres il me dit acces accepté et un message acces refusé
    si je rentre C il me renvoi 2 messages acces refusé et 1 message acces accepté
    C'est donc le fonctionnement normal du code.
    En fait, tu veux faire quoi?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    rien n' y fait j'ai tjs le meme probleme!!!

  9. #9
    Membre actif
    Homme Profil pro
    Manager de Projet SAP
    Inscrit en
    Mars 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Pologne

    Informations professionnelles :
    Activité : Manager de Projet SAP
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2009
    Messages : 210
    Points : 238
    Points
    238
    Par défaut
    Bonjour.

    Peut etre rajouter une indication qu'il doit se deplacer au debut de la table avant de lancer la recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Public Sub essai_AfterUpdate()
    Dim dbsDepart As DAO.Database
    Dim rstDepart As DAO.Recordset
    Dim Test As String
     
    Set dbsdepart = CurrentDb
    Set rstdepart = dbsdepart.OpenRecordset("TableAutorisationTemporaire", dbOpenDynaset)
     
    test = rstdepart("nomAutorisation")
    
     rstdepart.movefirst
    
    While Not rstdepart.EOF
        test = rstdepart.fields("nomAutorisation").value
        If StrComp(Me.essai, test, vbTextCompare) = 0 Then
            MsgBox "Accès accepté"
            Call macro10
        Else
           MsgBox "Accès interdit"
        End If
        rstDepart.movenext
    Wend
    rstdepart.Close
    Set rstdepart = Nothing
    End Sub
    Cdlt

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    voila j'ai un formulaire avec des boutons et une zone texte qui s'appelle essai
    j'ai une table qui s'appelle table autorisation temporaire ou se trouve plusieurs champs dont 2 qui s'appele "nomAutorisation "et "armoire Autorisation".(2 listes deroulante) ce que j'aimerai,c'est que quand l'utilisateur s'identifie dans la zone texte "essai" le curseur de la souris pointe sur le bouton qui lui est affecté dans la table autorisation temporaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub macro10()
    Dim placard As Integer
     
    Set dbsdepart = CurrentDb
    Set rstdepart = dbsdepart.OpenRecordset("TableAutorisationTemporaire", dbOpenDynaset)
    placard = rstdepart("armoireAutorisation")
     
          While Not rstdepart.EOF
              With rstdepart
              placard = rstdepart.Fields("armoireAutorisation").Value
              rstdepart.MoveNext
             'placard = !armoireAutorisation
              End With
     
             Select Case placard
     
             Case Is = 1
     
                      SetCursorPos 920, 590
                     mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 920, 590, 0, 0
                     Me.essai.Value = ""
     
              Case Is = 3
                     SetCursorPos 720, 590
                     mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 720, 590, 0, 0
                     Me.essai.Value = ""
     
              Case Is = 4
                     SetCursorPos 590, 590
                     mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 590, 590, 0, 0
                     Me.essai.Value = ""
     
              Case Is = 2
                    SetCursorPos 820, 590
                     mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 820, 590, 0, 0
                     Me.essai.Value = ""
     
     
     
       Case Else
       MsgBox "erreur : " & placard
       Me.essai.Value = ""
     
    End Select
     
     
        'rstdepart.MoveNext
        Wend
     
    rstdepart.Close
    dbsdepart.Close
    Set rstdepart = Nothing
    End Sub

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Dans ce cas, un DLookUp suffit pour récupérer la bonne valeur.
    F1 est ton ami.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    j'ai mis le code que j'ai deja essayé ,mais par rapport a la table il ne prend pas compte des enregistrement . quelque soit A B C ou D il place le pointeur de la souris dans les memes coordonnees X,Y et la cela me pose un probleme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcourir un recordset
    Par amine.ghazi dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/08/2010, 13h18
  2. Réponses: 1
    Dernier message: 09/03/2009, 19h26
  3. [A-07] Parcourir un RecordSet
    Par AlainL dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/01/2009, 19h16
  4. Parcourir un recordset pour un select-Case
    Par Pascal87 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/09/2007, 21h16
  5. Réponses: 3
    Dernier message: 29/03/2006, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo