1
我在我的C#ASP.net Web應用程序中創建了一個報告,以生成提案的封面。我正在嘗試將提案ID傳遞給報告。我的數據集被設置爲接受提案ID作爲查詢參數,並且我定義了GetByProposalID和FillByProposalID方法。如何將參數傳遞給SSRS報告查詢?
問題是,當報表運行時,報表查看器不包含數據。問題出在我的代碼中,或者在我的報告/報告查看器配置中。
這裏是我的方法:
/// <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查找其他問題。)
我在報告上設置了參數ProposalID,並在刪除SQL @前綴後創建了具有該名稱的ReportParameter對象。我的PDF文件在這些字段中仍然沒有數據。我需要刪除行'ta.FillByProposalID()'? –
經過對我的代碼的進一步審查後,我正在用一個數據集填充報告:'ds_Report_ReportCoverPage'。也許我需要將我的參數傳遞給數據集? –
是的,將ReportParameter映射到數據集中的參數,並且應該設置。 –