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

Fuzcrew Messages postés 4 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 21 janvier 2010 - 19 janv. 2010 à 10:05
Fuzcrew Messages postés 4 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 21 janvier 2010 - 19 janv. 2010 à 11:58
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 janv. 2010 à 10:54
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)
0
Fuzcrew Messages postés 4 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 21 janvier 2010
19 janv. 2010 à 11:58
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
0
Rejoignez-nous