How to send parameters to Subreport in Crystal Reports

19,044

Solution 1

Finally after lot of trails, I have solved it.May be this will be helpful to others.I have used the same parameter Name for Main and SubReport, used below code to set its parameter

objReportDocument.SetParameterValue("@QuoteID", ValQuoteID,objReportDocument.Subreports[0].Name.ToString());

Solution 2

Well, this is really helpful for me as my problem has been solved with the following code.

rd.SetParameterValue("TotalVisits", totalVisits, rd.Subreports[0].Name.ToString());

rd.SetParameterValue("GrandTotal", grandTotalPaymentType, rd.Subreports[1].Name.ToString());
Share:
19,044
Prathap
Author by

Prathap

Updated on June 08, 2022

Comments

  • Prathap
    Prathap almost 2 years

    Using VS 2008.

    I have two stored procedures, one used to get data for the main report and other for Sub report and both the SP's use the same parameter QuoteID.

    I have send parameter to main report using ReportDocument. But I am not aware how to send parameters to SubReport.

    I tried many diff ways using the reportdocument's setparameter method which also takes subreport name as argument.But it didn't.

    Below is the code I have used

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

    Sending parameter to Subreport

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

    nothing worked.I have already wasted two days on this. [SD_SalesOrderReport;1] main SP and [SD_GetBatchReportDetails;1] subreport SP.

    It would be great if someone can provide a solution for this.If there are some changes to be made in designed please share images.Thank you.

  • Peter PitLock
    Peter PitLock almost 10 years
    well this should be one of the first things listed in google when searching for "crystal report set parameter value invalid index"