Pb en vb+datareport

Fermé
oussama - 12 févr. 2008 à 11:36
 Izeg - 11 juin 2008 à 20:35
Bonjour,
j'ai un datareport qui va se charger à partir d'une table "Client".voila le code:


Private Sub DataReport_Initialize()
Dim db As Connection
Set db = New Connection
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\projet07.mdb;"
Set ado = New Recordset
ado.Open "SELECT * FROM Client", db, adOpenStatic, adLockOptimistic
Do While Not ado.EOF
Liste_clt.Sections("Section1").Controls("label6").Caption = ado.Fields("code_client")
Liste_clt.Sections("Section1").Controls("label7").Caption = ado.Fields("nom_client")
Liste_clt.Sections("Section1").Controls("label8").Caption = ado.Fields("prenom_client")
Liste_clt.Sections("Section1").Controls("label9").Caption = ado.Fields("code_type")
ado.MoveNext
Loop
End Sub

le pb c'est que le data report ne m'affiche que la dernier enregistrement.

kelk1 peut m'aider?merci
A voir également:
  • Pb en vb+datareport
  • Vb cable - Télécharger - Audio & Musique
  • Vb - Télécharger - Langages
  • Vb editor - Télécharger - Langages
  • Vb runtime - Télécharger - Divers Utilitaires
  • Vb 2008 - Télécharger - Langages

2 réponses

le problème c que vous êtes indiqué seulement le premier ligne de la liste dans la boucle et toutes les enregestrement sont affichées dans la même ligne alors que la derniere enregestrement reste affichée seule.

il faut faire un variable de conteur par example:

au demarage vous indique un variable

dim varcount


dans la procedure tu va entrer la valeur 1 pour ce variable

Private Sub DataReport_Initialize()
Dim db As Connection
varcount=1
et dans la boucle faire au lieu de section1 enter le variable varcount:

ado.MoveFirst
Do While Not ado.EOF
Liste_clt.Sections("varcount").Controls("label6").Caption = ado.Fields("code_client")
Liste_clt.Sections("varcount").Controls("label7").Caption = ado.Fields("nom_client")
Liste_clt.Sections("varcount").Controls("label8").Caption = ado.Fields("prenom_client")
Liste_clt.Sections("varcount").Controls("label9").Caption = ado.Fields("code_type")
ado.MoveNext
varcount=varcount + 1
Loop
End Sub


je ne suis pas sûr de cette methode, et bon chance
0
S'il y a une similitude avec DAO que je maîtrise mieux de ADO, je pense que ton problème vient du fait que ton recordset n'est pas rempli à l'ouverture. Il fau opérer comme suit :
1°/ - tester que ton recordset n'est pas vide si non tu auras un msg d'erreur avec les instructions qui suivent
if not MonRst.BOF then ' Un rst non vide se positionne à l'ouverture sur le 1er enregistrement d'où la propriété .BOF est égale à FALSE
2°/ - remplir ton recordset
MonRst.movelast ' c'est ce parcourt du curseur vers la fin puis vers le début qui permet de remplir le recordset
MonRst.MoveFirst
end if
Mes encouragements et mes meilleures salutations
Izeg
0