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

IHM Discussion :

Parcourir un recordset


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut Parcourir un recordset
    Bonjour

    Après avoir lu pas mal d’articles sur les forums, je me permets d'ouvrir une discussion n'ayant pas trouver la réponse.

    j'ai un formulaire et un sous formulaire. Le sous formulaire est en mode continu (je ne sais pas si c'est important pour la solution).

    Je souhaite ajouter ou faire une mise à jour de ma table stock en bouclant sur les enregistrements de mon sous formulaire. Or, si j'ai 2 enregistrements ou plus dans mon sous formulaire, le code boucle X fois mais sur le premier enregistrement ou celui qui est activé.

    Ci dessous le code avec des explications.

    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
     
     
    Dim recherche As String
    Dim RS As DAO.Recordset
    Dim RSparent As DAO.Recordset
    Dim LngNbEnregistrement As Long
    Dim ValEnregistrement
     
     ' sorties de sotck
     
    Set RSparent = CurrentDb.OpenRecordset("SELECT * FROM tblfabricationEntree  WHERE FabricationID=" & Forms!frmFabrication!FabricationID)
    RSparent.Edit
    LngNbEnregistrement = RSparent.RecordCount 'nombre d’enregistrement dans le RecordSet
     
     If LngNbEnregistrement > 0 Then 'si le recordset à un ou des enregistrement(s)
           RSparent.MoveFirst
     
           Do Until RSparent.EOF
                       ValEnregistrement = RSparent.Fields("FabricationEntreeID")
     
                          Set RS = CurrentDb.OpenRecordset("SELECT * FROM tblStock  WHERE CodeTable=" & Chr(34) & ValEnregistrement & Chr(34))
                          LngNbEnregistrement = RS.RecordCount 'nombre d’enregistrement dans le RecordSet filtré
     
                   If LngNbEnregistrement > 0 Then ' Mise à jour de l'enregistrement
                               RS.Edit 'ouverture de l'enregistrement
                                  With RS
                                      'code de MAJ
                                  End With
                              RS.Update
                              RS.Close
     
                   Else ' nouvel enregistrement
                          RS.AddNew 'ouverture de l'enregistrement 
                                  With RS
                                        ' code du nouvel enregistrement 
                                 End With
                            RS.Update
                            RS.Close
     
     
                   End If
              RSparent.MoveNext
        Loop
    Else
     
    MsgBox "Absence d'enregistrements"
     
    End If

  2. #2
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    J'avoue ne pas voir le bug a priori.

    Qques remarques :
    Attention, le RecordCount ne retourne pas le nombre d'enreg, mais le nombre d'enreg *parcourus* (cela peut faire une sacré différence).
    Pour savoir si tu as des enregs ou pas, il vaut mieux tester si on est en EOF dès l'ouverture du recordset

    A quoi sert ton RSparent.Edit en debut de code ?

    Bizare, ce truc...

    Yvan

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Le RSparent sert a vérifier si j'ai des enregistrements dans le recordset a enregistrer.
    J'ai essayé avec le EOF mais idem. Il m'annonce que j'ai 3 enregistrements dans le recordset mais je n'arrive pas à boucler dessus. Il récupère 3 fois la valeur du premier enregistrement.

    Mon objectif est de faire les étapes suivantes :
    - vérifier si mon sous formulaire a des enregistrements
    - si oui, vérifier si c'est une mise à jour des enregistrements déjà présent dans la tblStock ou si il faut les ajouter.
    - et boucler le nombre de fois que nécessaire
    toutes ces étapes sont ok mais la boucle ne change pas de ligne ...

  4. #4
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    Dans quel recordset as-tu 3 enregs ? RS ou RSparent ?

    As-tu fait tourner ton code en mode pas à pas en vérifiant A CHAQUE ETAPE que tout est ok ? (indice : si tu fais F8 plus de 3 fois par minute, tu vas beaucoup trop vite).

    Yvan

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Problème résolu
    Merci de vos conseils, j'ai trouvé l'erreur avec le pas à pas.
    Effectivement je n'avais pas 3 enregistrements dans mon recordset

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

Discussions similaires

  1. [AC-2003] parcourir un recordset
    Par chuspyto dans le forum VBA Access
    Réponses: 11
    Dernier message: 16/09/2009, 17h52
  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