2016-08-30 16 views
0

メインレポートに3つの異なるサブレポートを複数回インポートしました。私はこのようにそのパラメータを渡す:繰り返しサブレポートにパラメータが表示されない

enter image description here

すべての色サブレポートを表します。

for (int i = 0; i < rlc.ReportLayout.Count; i++) 
{ 
    if (rlc.ReportLayout[i].SubreportName == "SectionReportTest1.rpt") 
    { 
     SetSectionOneReportParameters(reportParameterList); 
    } 
    if (rlc.ReportLayout[i].SubreportName == "SectionReportTest2.rpt") 
    { 
     SetSectionTwoReportParameters(reportParameterList); 
    } 
    if (rlc.ReportLayout[i].SubreportName == "SectionReportTest3.rpt") 
    { 
     SetSectionThreeReportParameters(reportParameterList); 
    } 
} 

何とか最初のレポートだけではパラメータを取得するようです。私は何が欠けているのですか?

UPDATE:

private void SetSectionOneReportParameters(List<ReportParameter> reportParameterList) 
{ 
    reportParameterList.Add(new ReportParameter() { Name = "SectionParameterID", Value = "ParameterOne", SubreportName = "SectionReportTest1.rpt" }); 
} 

private void SetSectionTwoReportParameters(List<ReportParameter> reportParameterList) 
{ 
    reportParameterList.Add(new ReportParameter() { Name = "SectionParameterID", Value = "ParameterTwo", SubreportName = "SectionReportTest2.rpt" }); 
} 

private void SetSectionThreeReportParameters(List<ReportParameter> reportParameterList) 
{ 
    reportParameterList.Add(new ReportParameter() { Name = "SectionParameterID", Value = "ParameterThree", SubreportName = "SectionReportTest3.rpt" }); 
} 

答えて

0

あなたのメインレポートの「共有」で、すべてのパラメータを宣言し、その後、すべてのあなたのサブレポートでそれらにアクセスすることができます。

メインレポートでShared numbervar myparamと宣言して、使用するサブレポートで同じ構文を再利用します.C#は必要ありません。 (あなたはまだC#のを使用したい場合は、CrystalレポートからSetParameterValueメソッドを使用します。)ここで

"1.4.3.1.4 To set discrete parameters in a report"からの例です:

private void SettingParameters_RD(ReportDocument TestReport) 
{ 
    string PARAMETER_FIELD_NAME = "Country"; 
    ArrayList countries = new ArrayList(); 
    countries.Add("Canada"); 
    countries.Add("USA"); 
    TestReport.SetParameterValue(PARAMETER_FIELD_NAME, countries.ToArray()); 
    crystalReportViewer.ReportSource = TestReport; 
} 

は、単にあなたのコードでこれを使用して、あなたのサブレポートにアクセスすることにより、

mainreport.Subreports["subreportname"].SetParameterValue("paramname","values"); 

コードでサブレポートのオブジェクトとパラメータのコレクションが編集されませんでした。これで修正されるはずです

関連する問題