Codes with Hammer
Codes with Hammer

Reputation: 818

How to pass a parameter to an SSRS report query?

I have created a report in my C# ASP.net web application, to generate a cover page of a proposal. I am attempting to pass the proposal ID to the report. My dataset is set up to accept the proposal ID as a query parameter, and I have the GetByProposalID and FillByProposalID methods defined.

The problem is that when the report runs, the report viewer does not contain data. Either the problem is in my code, or in my report / report viewer configuration.

Here's my method:

    /// <summary>
    /// Generate the cover page report as a PDF file from a given proposal
    /// </summary>
    /// <param name="ProposalID">Proposal ID from the database of the proposal</param>
    public void GenerateCoverPage( int ProposalID   )
    {
        ReportViewer viewer = new ReportViewer();
        viewer.Reset();
        viewer.ProcessingMode = ProcessingMode.Local;

        viewer.LocalReport.ReportPath = "ReportCoverPage.rdlc"; //sets the report from the project RDLC file

        //Connect the dataset to the report
        ds_ReportCoverPage ds = new ds_ReportCoverPage();
        ds_ReportCoverPage.dt_ReportCoverPageDataTable table = new ds_ReportCoverPage.dt_ReportCoverPageDataTable();
        ds_ReportCoverPageTableAdapters.dt_ReportCoverPageTableAdapter ta = new ds_ReportCoverPageTableAdapters.dt_ReportCoverPageTableAdapter();
        ta.FillByProposalID(table, ProposalID); //This SHOULD fill the adapter with the data from the selected proposal

        ReportDataSource source = new ReportDataSource("ds_Report_ReportCoverPage", ds.Tables[0]); //Name must match the data source name within the report

        viewer.LocalReport.DataSources.Add(source);
        //Run-time exception that there is no report parameter "@Proposal"
        //ReportParameter parm = new ReportParameter("@Proposal", ProposalID.ToString()); //Placeholder in report query
        //viewer.LocalReport.SetParameters(parm);
        viewer.LocalReport.Refresh();

        string filepath = "C:\\Temp\\foo.pdf";
        SavePDF(viewer, filepath);

    }

As you can see, I tried to pass the parameter as a ReportParameter, but the parameter is in the query and not the report so it was rejected.

(I've gotten this far thanks to looking up other questions on SO.)

Upvotes: 1

Views: 2880

Answers (1)

Doug Morrow
Doug Morrow

Reputation: 1366

You will need a parameter in the report and then you can map that parameter to the parameter in the query in the data set.

Upvotes: 1

Related Questions