1

4つのサブレポートがあるCyrstalレポートがあり、ItemID列とCultureを介してリンクされているため、パラメーター値「?Pm-ItemID」と「?Pm-Culture」があり、DataSetを使用しています。データをCrystalReportのデータソースにロードします。レポートを実行すると、パラメータフィールドが指定されていないというエラーが表示されるので、これらのParameterFieldsに何を渡すかが私の質問だと思います。

ここにアイデアがあります。

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???);
}
4

2 に答える 2

1

さて、何が悪いのかわかります。

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

このようにすべきではありません

DataSet subds = GenerateReportData(subreport.name)
myreport.SubReports[i].SetDataSource(subds);
于 2010-02-10T01:44:44.793 に答える
0

Crystalについてはわかりませんが、SSRSでは次のように機能します。

1)サブレポートを作成し、いくつかのパラメーターを作成します

2)メインレポートを作成し、そこにサブレポートを配置します。プロパティで、サブレポートのパラメーターにバインドするものを指定できます。

結論:これはコードで設定されることではなく、レポートデザイナーであると思います。

于 2010-02-10T00:56:06.860 に答える