2010-02-10 9 views
1

Eh bien, j'ai un rapport Cyrstal qui a 4 rapports secondaires sur et il est lié par une colonne ItemID et une culture, donc il a une valeur de paramètre "? Pm-ItemID" et "? Pm-Culture" maintenant j'utilise DataSet pour charger les données dans la source de données du Crystal Report, quand je lance le rapport il me donne une erreur qui était un champ de paramètre de demande n'a pas été fourni, donc je pense que ma question serait ce que je vais passer à ces ParameterFields?Crystal Rapport sur C#

Voici une idée.

ReportDocument myreport = new ReportDocument(); 
myreport.Load("C:\MyReport.rpt"); 
DataSet ds = GenerateReportData(); 
myreport.SetDataSource(ds); 

//Loop through each to Load the DataSet 
for (int i = 0; i < myreport.Subreports.Count; i++) 
{ 
    ReportDocument subreport = myreport.SubReports[i]; 
    DataSet subds = GenerateReportData(subreport.name) 
    subreport.SetDataSource(subds); 
} 

//I can see that there's a parameterfields in myreport.ParameterFields 
//As I look through inside it there are 8 ParameterFields repeating Pm-ItemID and Pm-Culture 
foreach (ParameterField pf in myreport.ParameterFields) 
{ 
    myreport.SetParameterValue(pf.Name, Value???); 
} 

Répondre

1

Eh bien, je vois ce qui ne va pas.

ReportDocument subreport = myreport.SubReports[i]; 
DataSet subds = GenerateReportData(subreport.name) 
subreport.SetDataSource(subds); 

ne devrait pas se faire de cette façon, il devrait être

DataSet subds = GenerateReportData(subreport.name) 
myreport.SubReports[i].SetDataSource(subds); 
+0

J'ai oublié que c'est un objet com, qui pourrait ne pas supporter oop. – Juvil

0

Je ne sais pas à propos de Crystal, mais dans SSRS il fonctionne comme ceci:

1) créer un sous-état et créer des paramètres

2) créer le rapport principal, y mettre la sous-état et dans les propriétés, vous pouvez spécifier quoi lier aux paramètres du sous-rapport

Conclusion: Je ne pense pas que cela soit supposé être défini dans le code, mais plutôt dans le concepteur de rapport.

+0

il est défini dans le concepteur de rapport, il est lié MainItemReport.ItemID lié à SubItemReport.ItemID et ainsi de suite, mais le rapport Exécuter c'est demander la valeur de? Pm-ItemID et? Pm-Culture – Juvil

+0

comme vous pouvez le voir, je pensais que le réglage de l'ensemble de données à travers chaque sous-rapports était suffisant, notez la boucle, mais en cours de route, j'ai une erreur certains champs de paramètres où il n'a pas de valeur. – Juvil