RDLC Report (Stored Procedure) with 2 Parameters

落花浮王杯 提交于 2019-12-11 05:13:55

问题


private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'DataSet1.sp_GetRent1' table. You can move, or remove it, as needed.
        this.sp_GetRent1TableAdapter.Fill(this.DataSet1.sp_GetRent1, "@RentNo1", "@AppPath");
        //this.GetSPResult();
        this.reportViewer1.RefreshReport();
    }

private void button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        reportViewer1.Visible = true;
        reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
        reportViewer1.LocalReport.DataSources.Clear();
        reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1",dt));
        GetSPResult();
    }

private DataTable GetSPResult()
    {
        DataTable ResultsTable = new DataTable();
        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=RentACar1;Integrated Security=True");// ProviderName = "System.Data.SqlClient");
        try
        {
            SqlCommand cmd = new SqlCommand("sp_GetRent1",conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@RentNo1", "9905-10-2017");
            cmd.Parameters.AddWithValue("@AppPath", @"E:\Rent A Car\RentACar1\RentACar\bin\Debug");
            conn.Open();
            //cmd.ExecuteNonQuery();
            SqlDataAdapter adaptor = new SqlDataAdapter(cmd);
            adaptor.SelectCommand = cmd;
            adaptor.Fill(ResultsTable);
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        return ResultsTable;
    }

This code doesn't show me anything in RDLC report. If i open dataset1.xsd, and I give the same parameters to the SP, I get values in grid. But I am unable to get values in RDLC.


回答1:


Your button1_Click should look like this:

private void button1_Click(object sender, EventArgs e)
{
    DataTable dt = GetSPResult();
    reportViewer1.Visible = true;
    reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
    reportViewer1.LocalReport.DataSources.Clear();
    reportViewer1.LocalReport.DataSources.Add(new 
    Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dt));
}

Note that the DataTable returned from GetSPResult should be added to the report not a newly created blank table as in yourt code.



来源:https://stackoverflow.com/questions/46837419/rdlc-report-stored-procedure-with-2-parameters

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!