Bonjour,
J'utilise crystal report sous visual studio 2013. J'ai un rapport qui s'appelle facture.rpt qui fonctionne correctement.
Mais quand je veux l'inclure en tant que sous rapport, j'ai un message d'erreur : Valeurs de paramètre manquantes quand j'utilise la fonction "ExportToDisk"
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33 Public Sub SaveFactureToPDF(ByVal Cmd As Commande, ByVal Path As String) Try Dim Rest = GetLignesCmdRestant(Cmd) Dim LesLignes = GetLigneDevis(Cmd) Dim cryRpt As New Factures Dim Bidou As New List(Of Bidon) Bidou.Add(New Bidon(0)) cryRpt.SetDataSource(Bidou) cryRpt.SetParameterValue("RestantAEnvoyer", Rest.Count > 0) 'Exemplaire à Renvoyer cryRpt.Subreports("Facture.rpt").SetDataSource(LesLignes) cryRpt.SetParameterValue("Adresse", BuildAdresseClt(Cmd.Client), "Facture.rpt") cryRpt.SetParameterValue("DateDevis", Cmd.DteCommande, "Facture.rpt") cryRpt.SetParameterValue("NoCmde", If(Cmd.RefCRM = Nothing, "", Cmd.RefCRM), "Facture.rpt") cryRpt.SetParameterValue("Collaborateur", If(Cmd.Collaborateur.RefCRM = Nothing, "", Cmd.Collaborateur.RefCRM), "Facture.rpt") cryRpt.SetParameterValue("NumClient", Cmd.Client.RefCRM, "Facture.rpt") cryRpt.SetParameterValue("Telephon", Cmd.Collaborateur.Societe.Tel, "Facture.rpt") Dim SSTotal As Decimal = (From l In LesLignes Select l.Prix).Sum cryRpt.SetParameterValue("SousTotal", SSTotal, "Facture.rpt") cryRpt.SetParameterValue("FraisEnvoi", If(Cmd.FraisPort > 0, Cmd.FraisPort.ToString("F2") & " ", "OFFERT"), "Facture.rpt") cryRpt.SetParameterValue("ReducVIP", If(Cmd.Client.TauxReductionCmd + Cmd.TauxReduction > 0, -1 * SSTotal * If(Cmd.Client.TauxReductionCmd > 0, Cmd.Client.TauxReductionCmd / 100, 1) * If(Cmd.TauxReduction, Cmd.TauxReduction / 100, 1), 0), "Facture.rpt") cryRpt.SetParameterValue("Paiement", BuildPaiementCmd(Cmd), "Facture.rpt") cryRpt.SetParameterValue("PrixTotal", Cmd.PrixTotal + Cmd.FraisPort, "Facture.rpt") cryRpt.SetParameterValue("Exemplaire", "EXEMPLAIRE A RENVOYER", "Facture.rpt") cryRpt.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Path) Catch ex As Exception HelperJournal.WriteException(ex) End Try End Sub
C'est vraiment un problème de passage de paramètre car quand j'enlève les sous rapports mon rapport se génère proprement et quand je génère le sous rapport comme un rapport principal ça marche aussi.
Je suis un peu perdu... J'ai essayé de remplir le rapport principal en 1er ou après le sous rapport : toujours l'erreur. J'ai essayé de mettre @ devant le nom du paramètre de sous rapport : index hors limite...
Je dois aussi préciser que mon sous rapport n'est pas lier à mon rapport principal (c'est juste pour avoir en un seul PDF plusieurs formulaires)
J'ai essayé aussi
Mais ça me dit non pris en compte...
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Dim Subr1 As ReportDocument = cryRpt.OpenSubreport("Facture.rpt") Subr1.SetDataSource(LesLignes) Subr1.SetParameterValue("Adresse", BuildAdresseClt(Cmd.Client)) Subr1.SetParameterValue("DateDevis", Cmd.DteCommande) Subr1.SetParameterValue("NoCmde", If(Cmd.RefCRM = Nothing, "", Cmd.RefCRM)) Subr1.SetParameterValue("Collaborateur", If(Cmd.Collaborateur.RefCRM = Nothing, "", Cmd.Collaborateur.RefCRM)) Subr1.SetParameterValue("NumClient", Cmd.Client.RefCRM) Subr1.SetParameterValue("Telephon", Cmd.Collaborateur.Societe.Tel) Dim SSTotal As Decimal = (From l In LesLignes Select l.Prix).Sum Subr1.SetParameterValue("SousTotal", SSTotal) Subr1.SetParameterValue("FraisEnvoi", If(Cmd.FraisPort > 0, Cmd.FraisPort.ToString("F2") & " ", "OFFERT")) Subr1.SetParameterValue("ReducVIP", If(Cmd.Client.TauxReductionCmd + Cmd.TauxReduction > 0, -1 * SSTotal * If(Cmd.Client.TauxReductionCmd > 0, Cmd.Client.TauxReductionCmd / 100, 1) * If(Cmd.TauxReduction, Cmd.TauxReduction / 100, 1), 0)) Subr1.SetParameterValue("Paiement", BuildPaiementCmd(Cmd)) Subr1.SetParameterValue("PrixTotal", Cmd.PrixTotal + Cmd.FraisPort) Subr1.SetParameterValue("Exemplaire", "EXEMPLAIRE A RENVOYER")
Ca doit être un problème de syntaxe ... mais je sèche, même sur Google j'ai pas trouvé mon bonheur pour cette erreur.
MErci de votre aide
Partager