如何将参数传递给SSRS报表查询

本文关键字:SSRS 报表 查询 参数传递 | 更新日期: 2023-09-27 18:26:28

我在C#ASP.net web应用程序中创建了一个报告,用于生成提案的封面。我正试图将提案ID传递给报告。我的数据集被设置为接受建议ID作为查询参数,并且我定义了GetByProposalID和FillByProposal ID方法。

问题是,当报表运行时,报表查看器不包含数据。问题可能出现在我的代码中,也可能出现在报表/报表查看器配置中。

这是我的方法:

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

正如您所看到的,我试图将该参数作为ReportParameter传递,但该参数在查询中,而不是在报告中,因此被拒绝。

(我之所以能走到这一步,是因为我在SO上查找了其他问题。)

如何将参数传递给SSRS报表查询

您将需要报表中的一个参数,然后可以将该参数映射到数据集中查询中的参数。