Pb en vb+datareport

oussama -  
 Izeg -
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
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. azeddine
     
    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
  2. Izeg
     
    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