[Déplacé VB6 -> VBA] Impression Etat enregistrement par enregistrement avec VB

Signaler
Messages postés
4
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
21 janvier 2010
-
Messages postés
4
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
21 janvier 2010
-
Access 2003

J'ai un état basé sur un formulaire (Etat.code = Formulaire.code) qui lui ai basé sur une requête retournant plusieurs enregistrement. Je souhaite que pour chaque enregistrement, l'etat se lance, s'imprime et se ferme (ou s'imprime directement).
Je suis donc passé par un code vb qui parcours les enregistrement, le parcours marche (puisque les msgbox fonctionnent), mais il ne m'imprime que le premier enregistrement.

Voila mon code :

sur activation du formulaire :

Dim db As Database
Dim rs As Recordset
 
Set db = CurrentDb
Set rs = db.OpenRecordset("R_test")
 
rs.MoveFirst
While Not rs.EOF
  MsgBox rs("code_rep")
  DoCmd.OpenReport "Etat", acViewNormal, , " [Code_rep] = " & rs("Code_rep")
  rs.MoveNext
Wend
rs.Close


Peut etre le souci viendrait de l'emplacement de ce code

Si vous voyer quelque chose, merci d'avance !

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Pas habitué à Access, mais quelque chose me titille :
Comment fais-tu le lien entre DoCmd et ton "rs" ?
A mon avis, il faudrait remettre ton "R_test" dans le champ FilterName du DoCmd
De quel type est le champ Code_rep dans ta table ?
Numérique ou texte ?
Si texte, manque des ' : "[Code_rep] = '" & rs("Code_rep") & "'"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
4
Date d'inscription
mardi 19 janvier 2010
Statut
Membre
Dernière intervention
21 janvier 2010

Oui en effet, je viens de résoudre le problème et il venait du type de champs. J'ai préféré utilisé un de mes champs numérique.

Dim db As Database
Dim rs As Recordset
 
Set db = CurrentDb
Set rs = db.OpenRecordset("R_test")
 
rs.MoveFirst
While Not rs.EOF
  MsgBox rs("code_rep")
  DoCmd.OpenReport "E_test", acViewNormal, "", "[num_auto]=" & rs("num_auto")
  rs.MoveNext
Wend
rs.Close


Merci a toi