2013-08-05 105 views
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查找其他問題。)

回答

1

您需要在報表中的參數,然後你可以在參數查詢數據集中映射到參數。

+0

我在報告上設置了參數ProposalID,並在刪除SQL @前綴後創建了具有該名稱的ReportParameter對象。我的PDF文件在這些字段中仍然沒有數據。我需要刪除行'ta.FillByProposalID()'? –

+0

經過對我的代碼的進一步審查後,我正在用一個數據集填充報告:'ds_Report_ReportCoverPage'。也許我需要將我的參數傳遞給數據集? –

+1

是的,將ReportParameter映射到數據集中的參數,並且應該設置。 –

相關問題