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 qui coince en ado


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 134
    Par défaut boucle qui coince en ado
    bonjour, je ne suis pas encore à l'aise avec les objets ado, et je joue un peu les apprentis sorciers. J'essaie de faire tourner cette boucle, mais elle coince après le premier enregistrement (seul le premier enregistrement est ajouté)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Rct_Aj2 As Recordset
     
    Set Rct_Aj2 = db.OpenRecordset("SELECT * FROM T_Formation_Formateur WHERE ((T_Formation_Formateur.NumeroFormation) Like " & Me.NumeroFormation & ");")
     
    Rct_Aj2.MoveLast
    Rct_Aj2.MoveFirst
    While Not Rct_Aj2.AbsolutePosition = Rct_Aj2.RecordCount
    DoCmd.RunSQL ("INSERT INTO T_Formation_Formateur ([NumeroFormation], [NumeroProfessionnel]) VALUES (" & MaxNum & ", " & Rct_Aj2(3) & ");")
    Rct_Aj2.MoveNext
    Wend
    j'ai testé la valeur de recordcount, et elle correspond bien au nombre d'enregistrements que j'essaie d'ajouter à T_Formation_Formateur
    toute aide est la bienvenue!
    merci

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    While Not Rct_Aj2.EOF

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 134
    Par défaut
    salut, j'avais essayé avec EOF au début, et comme ça ne marchait pas non plus (même résultat, un seul enregistrement ajouté) j'ai essayé quelquechose de plus tiré par les veuchs!
    peut-être est-ce un problème de requête sql, mais je ne vois pas où

  4. #4
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Peut-être que tu ajoute un petit peu un enregistrement au recordset sur lequel tu es ...
    Partant, tu arrives au dernier Enr, et donc tu es à la fin...
    Tu n'as pas besoin de recordset pour faire cela !
    Une simple requête fonctionne...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 134
    Par défaut
    merci pour ta réponse, le problème est le suivant : j'essaie de dupliquer des enregistrements avec sql, mais je n'y arrive pas :

    - j'ai une table T_Formation, qui contient les infos relatives à une formation (date, lieu, etc...), la clé est NumeroFormation

    - une T_Formation_Participant : les participants aux formations, avec NumeroProfessionnel comme référence à la table des pros participants, et NumeroFormation comme lien avec T_Formation

    mon but est d'arriver à "cloner" une formation, avec la liste des participants et des formateurs. Seule la date de la formation change. Pour cloner un enregistrement dans T_Formation, pas de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("INSERT INTO T_Formation ( DateDebutFormation, LieuFormation, ThemeFormation, CommentaireFormation ) SELECT " & choixdate & ", T_Formation.LieuFormation, T_Formation.ThemeFormation, T_Formation.CommentaireFormation FROM T_Formation WHERE ((T_Formation.NumeroFormation) like " & Me.NumeroFormation & ");")
    mais comment faire pour la liste des participants attachés à cette formation?

    comme je suis un novice, j'ai fait n'importe quoi, et ça marche :

    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
    Set db = CurrentDb
    Set ZoneTravail = DBEngine(0)
     
    Rem recherche du numero de formation créé
    Set Rct_Aj = db.OpenRecordset("SELECT Max(T_Formation.NumeroFormation) AS MaxDeNumeroFormation FROM T_Formation;")
    MaxNum = Rct_Aj(0)
    Rct_Aj.Close
     
    '''''''''''''''''''''''''
    'PARTICIPANTS
    '''''''''''''''''''''''''
     
    Rem sélection du jeu d'enregistrements
    Set Rct_Aj = db.OpenRecordset("SELECT * FROM T_Formation_Participant WHERE ((T_Formation_Participant.NumeroFormation) Like " & Me.NumeroFormation & ");")
     
    Rem ajout des participants
    If Rct_Aj.RecordCount <> 0 Then
    Rct_Aj.MoveLast
    Rct_Aj.MoveFirst
    If Rct_Aj.RecordCount = 1 Then
    DoCmd.RunSQL ("INSERT INTO T_Formation_Participant ([NumeroFormation], [NumeroProfessionnel]) VALUES (" & MaxNum & ", " & Rct_Aj(2) & ");")
    Else
    While Not Rct_Aj.AbsolutePosition = Rct_Aj.RecordCount - 1
    DoCmd.RunSQL ("INSERT INTO T_Formation_Participant ([NumeroFormation], [NumeroProfessionnel]) VALUES (" & MaxNum & ", " & Rct_Aj(2) & ");")
    Rct_Aj.MoveNext
    Wend
    Rct_Aj.MoveLast
    DoCmd.RunSQL ("INSERT INTO T_Formation_Participant ([NumeroFormation], [NumeroProfessionnel]) VALUES (" & MaxNum & ", " & Rct_Aj(2) & ");")
    End If
    End If
     
    Rem fermeture du jeu d'enregistrements
    Rct_Aj.Close
    c'est codé à l'arrache, c'est probablement pas très logique, mais ça marche parfaitement. j'avais pas mal d'erreurs 3021 (Aucun enregistrement en cours), c'est pour cela que j'ai dû rajouter des "if" partout!

    -puis j'ai essayé la même chose sur la table T_Formation_Formateur, mais ça bloque.

    Je remercie d'avance toute âme charitable qui pourrait m'indiquer une solution plus sensée, peut-être sans passer par ADO alors qu'il n'y en a vraisemblablement pas besoin...
    merci

Discussions similaires

  1. Une boucle for qui coince
    Par renaud26 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2008, 11h10
  2. Multiples Jointures qui coince...
    Par Zeprecheur dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/03/2006, 13h20
  3. [VBA-E]une boucle qui ne s'arrète pas
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/02/2006, 19h05
  4. Un double Select doublé d un "for each" qui coince
    Par Sparal dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 15h00
  5. Réponses: 1
    Dernier message: 28/07/2005, 15h21

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