1

提案書のカバー ページを生成するために、C# ASP.net Web アプリケーションでレポートを作成しました。プロポーザル ID をレポートに渡そうとしています。私のデータセットは提案 ID をクエリ パラメーターとして受け入れるように設定されており、GetByProposalID メソッドと FillByProposalID メソッドが定義されています。

問題は、レポートの実行時に、レポート ビューアーにデータが含まれていないことです。問題はコードにあるか、レポート/レポート ビューアーの構成にあります。

これが私の方法です:

    /// <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に関する他の質問を調べたおかげで、ここまで来ました。)

4

1 に答える 1