2017-01-19 2 views
-1

Ich möchte RDLC Report auf der Basis des Datums generieren. Ich habe zwei DateTimePickers und eine Button Controls auf meinem WindowForm und einem ReportViewer. Ich wähle zwischen Date und Date von DateTimePicker und wenn ich auf Button klicke, sollte die ReportViewer von Database auf der Basis von Date laden.Bei der lokalen Berichtsverarbeitung in C# winforms ist ein Fehler aufgetreten.

Hier ist meine Stored Procedure

CREATE PROCEDURE spGetBikeSalebyDate 
(
    @FromDate DateTime, 
    @ToDate  DateTime 
) 
AS 
    BEGIN 
     SELECT * FROM tblSaleBike 
     WHERE DateOfPurchase BETWEEN @FromDate AND @ToDate 
     ORDER BY DateOfPurchase asc 
    END 

und mein C# Code

 private void btnSearchBikeSale_Click(object sender, EventArgs e) 
    { 
     ShowReport(); 
    } 

    private void ShowReport() 
    { 
     reportViewer1.Reset(); 
     DataTable dt = GetData(dtpSearchFromDate.Value.Date, dtpSearchToDate.Value.Date); 
     ReportDataSource rds = new ReportDataSource("DataSet1", dt); 
     reportViewer1.LocalReport.DataSources.Add(rds); 
     reportViewer1.LocalReport.ReportPath = @"ReportSaleBikeByDate.rdlc"; 
     ReportParameter[] rParams = new ReportParameter[] { 
      new ReportParameter("fromDate",dtpSearchFromDate.Value.Date.ToShortDateString()), 
      new ReportParameter("toDate",dtpSearchToDate.Value.Date.ToShortDateString()) 
     }; 
     reportViewer1.LocalReport.SetParameters(rParams);//Error Occured Here 
     reportViewer1.LocalReport.Refresh(); 
    } 

    private DataTable GetData(DateTime fromDate , DateTime toDate) 
    { 
     DataTable dt = new System.Data.DataTable(); 
     using (SqlConnection con = new SqlConnection(CS)) 
     { 
      SqlCommand cmd = new SqlCommand("spGetBikeSalebyDate",con); 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.Parameters.Add("@FromDate", SqlDbType.DateTime).Value = fromDate; 
      cmd.Parameters.Add("@ToDate", SqlDbType.DateTime).Value = toDate; 
      SqlDataAdapter ad = new SqlDataAdapter(cmd); 
      ad.Fill(dt); 
     } 
     return dt; 
    } 

I bestanden haben zwei Parameter in fromDate und toDate in ReportViewer. Wenn ich mein Programm in eine debug mood stelle, und überprüfe das Programm und funktioniert gut i-e DataTable gibt Werte korrekt zurück, aber wenn es SQL Parameters erreicht, wirft es eine exceptionAn error occurred during local report processing. Ich weiß nicht warum, denn meine Report ist in der root directory. Ich werde auch die Snapshots anhängen. Bitte hilf mir.

enter image description here enter image description here

Aktualisiert

Das ist mein DataSet die

enter image description here

zwei Parameter übernimmt und dies ist Report Data

enter image description here

und dies ist der Exception Detail

enter image description here

+0

Sie benötigen Ausnahme Details zu teilen. –

+0

Sehr geehrter Herr, ich habe meine Frage aktualisiert. Welche Details soll ich teilen? –

+0

Die innere Ausnahme im Detail, hilft Ihnen, das Problem zu lösen. –

Antwort

1

Der Fehler, weil die folgende Aussage ist

 new ReportParameter("fromDate",dtpSearchFromDate.Value.Date.ToShortDateString()), 
     new ReportParameter("toDate",dtpSearchToDate.Value.Date.ToShortDateString()) 

Die Parameter geschrieben werden müssen, da sie in der gespeicherten Prozedur, und Sie haben Berücksichtigen Sie Groß- und Kleinbuchstaben. Die Parameter sollten wie folgt sein:

Fromdate

ToDate

Verwandte Themen