如何将参数发送到Crystal Reports中的子报表

Pra*_*hap 4 c# crystal-reports crystal-reports-2008

使用VS 2008.

我有两个存储过程,一个用于获取主报表的数据,另一个用于Sub报表,并且两个SP都使用相同的参数QuoteID.

我使用ReportDocument将参数发送到主报表.但我不知道如何将参数发送到SubReport.

我使用reportdocument的setparameter方法尝试了许多diff方法,该方法也将子报告名称作为参数.但它没有.

以下是我使用过的代码

    string Type = gvQuotationDetails.Rows[QuoteIndex].Cells["Type"].EditedFormattedValue.ToString();

    FilePath = ConfigurationManager.AppSettings["EMP_IMG_PATH"].ToString() + "\\" + ValQuoteID.ToString() + ".pdf";

    DeleteExistingFile(FilePath);

    try
    {
        AccountsPayableMaster objAPM = new AccountsPayableMaster();
        QuotationReport obj = new QuotationReport();
        objReportDocument.Load(Application.StartupPath + @"\rptQuotationReport.rpt");
        obj.crysQuotationReport.LogOnInfo = objAPM.ConnectionDetails("SD_SalesOrderReport;1");
        obj.crysQuotationReport.LogOnInfo = objAPM.ConnectionDetails("SD_GetBatchReportDetails;1");
        obj.crysQuotationReport.ReportSource = objReportDocument;
        objReportDocument.SetParameterValue("@QuoteID", ValQuoteID);
        objReportDocument.SetParameterValue("Type", Type);
        //objReportDocument.Subreports[Application.StartupPath + @"\BatchSubReport.rpt"].SetParameterValue("@QuoteID", ValQuoteID);
        //objReportDocument.Subreports["BatchReport.rpt"].SetParameterValue("@QuoteID", ValQuoteID);           

        string[] Print = objAPM.GetPrintDetails();

        SetPrintParameters(objReportDocument, Print);

        obj.Show();

        objReportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, FilePath);
    }

    catch (Exception ex)
    {
        MessageBox.Show(ex.Message); 
    } 
Run Code Online (Sandbox Code Playgroud)

将参数发送到子报表

//objReportDocument.Subreports[Application.StartupPath + @"\BatchSubReport.rpt"].SetParameterValue("@QuoteID", ValQuoteID);

//objReportDocument.Subreports["BatchReport.rpt"].SetParameterValue("@QuoteID", ValQuoteID);              

////objReportDocument.SetParameterValue("@QuoteID", ValQuoteID,"BatchReport.rpt);
Run Code Online (Sandbox Code Playgroud)

什么都没有用.我已经浪费了两天时间.[SD_SalesOrderReport;1]主SP和[SD_GetBatchReportDetails;1]子报告SP.

如果有人可以为此提供解决方案,那就太棒了.如果在设计上有一些变化,请分享图片.谢谢.

Pra*_*hap 11

最后在很多路径之后,我已经解决了它.可能这对其他人有帮助.我使用了相同的参数Name for Main和SubReport,在代码下面用来设置它的参数

objReportDocument.SetParameterValue("@QuoteID", ValQuoteID,objReportDocument.Subreports[0].Name.ToString());
Run Code Online (Sandbox Code Playgroud)