Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports > SDK
SDK Forum sur l'utilisation de Crystal Reports par des API (VB, C++, Delphi, Java, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2008, 16h24   #1
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 41
Points : 11
Points : 11
Par défaut [CR 7]Générer reports CR dans une boucle sous VB6

Bonjour,

le plus simplement mais peut être pas le plus facile à faire, je cherche à afficher des reports à la volée dans une boucle Do/Loop until, je m'explique, d'un côté j'ai un bout de code VB6 qui va récupérer des données dans une table (locale) Access .mdb, c'est une table avec des champs, "id_commande", "id_article", "nom_article", "id_client", etc..., le résultat est affiché dans un dbgrid, de l'autre, j'ai Crystal Reports 7 dans lequel j'ai sélectionné cette même table pour générer le contenu de mon etat, ce que j'aimerai faire c'est lier la boucle VB à mon état en lui passant comme paramètre mon champ "id_commande", mon problème est que cela imprime tjrs la même commande , alors que si j'ai "id_commande" 1, 2, 3, 4, j'aimerai que cela imprime la commande 1, puis la commande 2, etc...

mon bout de code,

Code :
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
Private Sub btnImprimerBL_Click()
Dim CrAppl AS New CRAXDRT.Application
Dim CrRep AS New CRAXDRT.Report
Dim rs AS ADODB.Recordset
Dim sMySql AS String
 
SET rs = New ADODB.Recordset
 
sMySql = "SELECT * FROM TBL_RAFALE ORDER BY id_commande ASC;"
 
rs.Open sMySql, cnxTBLRafale, adOpenForwardOnly, adLockReadOnly
 
IF rs.RecordCount > 0 Then
  Screen.MousePointer = vbHourglass
  rs.MoveFirst
  SET CrRep = CrAppl.OpenReport(App.Path & "\ETAT_RF_BL.rpt")
  Do
    CrRep.RecordSelectionFormula = "{TBL_RAFALE.id_commande}= " & rs!id_commande & " "
    CrRep.DATABASE.SetDataSource rs
    CrRep.PrintOut False
    rs.MoveNext
  Loop Until rs.EOF
  sMySql = ""
  rs.Close
  SET rs = Nothing
  Screen.MousePointer = vbDefault
End IF
 
End Sub
ce code fait à peut prêt ce que je veux, ça imprime, mais plusieurs fois la même commande , pourtant dans cette portion,

Code :
CrRep.RecordSelectionFormula = "{TBL_RAFALE.id_commande}= " & rs!id_commande & " "
l'id_commande change bien, comment puis-je faire pour que mon état CR soit imprimé en fonction de id_commande ?

merci pour votre aide
Yohann_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 13h51   #2
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 41
Points : 11
Points : 11
Bonjour,

j'ai résolu mon problème avec le code ci-dessous,

Code :
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
Private Sub btnImprimerBdr_Click()
Dim rs AS ADODB.Recordset
Dim sMySql AS String
 
SET rs = New ADODB.Recordset
 
sMySql = "SELECT * FROM TBL ORDER BY id_commande ASC;"
 
rs.Open sMySql, cnxTBL, adOpenForwardOnly, adLockReadOnly
 
IF rs.RecordCount > 0 Then
  Screen.MousePointer = vbHourglass
  crptBL.DataFiles(0) = "*** CHEMIN DU .MDB ***"
  crptBL.ReportFileName = "*** CHEMIN DU .RPT ***"
  rs.MoveFirst
  Do
    crptBL.SelectionFormula = "{TBL.id_commande}=" & rs!id_commande & " "
    crptBL.Action = 1
    rs.MoveNext
  Loop Until rs.EOF
  sMySql = ""
  rs.Close
  SET rs = Nothing
  Screen.MousePointer = vbDefault
End IF
 
End Sub
et ça imprime les états commande par commande..

a+
Yohann_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h35.


 
 
 
 
Partenaires

Hébergement Web