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 :

boucle sur recordset


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 250
    Points : 93
    Points
    93
    Par défaut boucle sur recordset
    Bonjour,

    J'ai un problème avec ma boucle qui devrait rechercher sur 2 recordset.
    J'ai le champ "auto" qui se trouve dans T_PARTAGE et T_ENTREPRISE (2 tables).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("T_PARTAGE")
    Set rst2 = dbs.OpenRecordset("T_ENTREPRISE")
     
    Do Until rst.EOF
        If rst!AUTO = rst2!AUTO Then
    MsgBox "o"
    Else
    MsgBox "erreur " & rst.Fields("AUTO") & " - " & rst2.Fields("AUTO")
    End If
    rst.MoveNext
    Loop
    En fait bien la boucle sur rst mais pas sur rst2...
    cela donne en msgbox faux :
    95200 - 1560
    95201 - 1560
    95202 - 1560

    en fait je voudrais qu'il trouve rst!auto = rst2!auto

    merci d'avance pour votre aide.
    MAMANHOU

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Comme tu le dis si bien :
    En fait bien la boucle sur rst mais pas sur rst2...
    Ton code ne boucle pas sur le rst2, il faudrait rajouter un
    Ce sera un code du genre :
    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
     
    ...
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("T_PARTAGE")
    Set rst2 = dbs.OpenRecordset("T_ENTREPRISE")
     
    Do Until rst.EOF
         Do Until rst2.EOF
              If rst!AUTO = rst2!AUTO Then
                   MsgBox "o"
              Else
                   MsgBox "erreur " & rst.Fields("AUTO") & " - " & rst2.Fields("AUTO")
              End If
              rst2.MoveNext
         Loop
         rst.MoveNext
    Loop
    Moi, je préfère utiliser un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Not rst.EOF
    ....
    Wend
    pour parcourir les recordset

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Bonjour,

    C'est à but didactique ce genre d'exercice ?

    Sinon il vaut mieux passer par une requête pour avoir les correspondances ou les non correspondances d'enregistrements.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 250
    Points : 93
    Points
    93
    Par défaut
    merci pour votre aide mais cela ne marche pas :
    Résultat

    95200 -1560
    95200 - 1561
    95200 - 1562
    ...

    Je continue à chercher
    Mamanhou

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 250
    Points : 93
    Points
    93
    Par défaut
    Bonjour Loufab,

    en fait mon code sera au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("T_PARTAGE")
    Set rst2 = dbs.OpenRecordset("T_ENTREPRISE")
     
    Do Until rst.EOF
        If rst!AUTO = rst2!AUTO Then
    'je supprime les enregistrements dont rst!AUTO = rst2!AUTO
    STR = "DELETE T_Entreprise.* FROM T_Entreprise WHERE ([AUTO]=" & rst.Fields("AUTO") )"
           CurrentDb.Execute STR
    End If
    rst.MoveNext
    Loop
    j'aimerai qu'il boucle sur T.PARTAGE et T.ENTREPRISE ; s'il trouve des enregistrements dans T.ENTREPRISE dont AUTO = AUTO de T.PARTAGE il les supprime
    Le bouton de contrôle est sur un simple formulaire indépendant non lié au table.

    mamanhou

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    A la base si on utilise une boucle pour un traitement sur une table c'est que le modèle de base de données est pourri. Vu la simplicité de la relation entre ses 2 tables je pencherais pour des carences en matière de connaissance SQL.

    Crée une requête SELECT de correspondance entre les 2 tables, lorsque ça affiche les bons enregistrement et transforme-la en requête DELETE.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 250
    Points : 93
    Points
    93
    Par défaut
    Merci, je vais travailler la-dessus.
    Mamanhou

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

Discussions similaires

  1. [XL-2007] Double boucle sur objet recordset
    Par Slavo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/03/2014, 16h17
  2. [AC-2003] Boucle Infinie sur RecordSet
    Par aminnio dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/06/2013, 11h55
  3. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 13h45
  4. [Toutes versions] Problème de boucle sur un Recordset
    Par Roums dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/10/2009, 12h41
  5. Boucle sur recordset
    Par Daniel MOREAU dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/02/2007, 13h40

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