2015-09-01 2 views
1

У меня возникли проблемы при запуске приложения для отображения ReportViewer. Это мой C# код: enter image description hereWPF RDLC Report and pass parameters

private void Report_Load(object sender, EventArgs e) 
      { 
       ShowReport(); 
      } 
      private DataTable GetData() 
      { 

       DateTime dtStart = DateTime.Parse(txtDataS.Text); 
       DateTime dtEnd = DateTime.Parse(txtDataE.Text); 
       DataTable _dt = new DataTable(); 
       using (_con = new SqlConnection(_strConexao)) 
       { 
       _cmd = new SqlCommand("SELECT_CADS", _con); 
       _cmd.CommandType = CommandType.StoredProcedure; 
       _cmd.Parameters.Add("@SDATE", SqlDbType.DateTime).Value = dtStart; 
       _cmd.Parameters.Add("@EDATE", SqlDbType.DateTime).Value = dtEnd; 
       _adp = new SqlDataAdapter(_cmd); 
       _adp.Fill(_dt); 

      } 
      return _dt; 
     } 

     private void ShowReport() 
     { 
      _reportViewer.Reset(); 
      DataTable _dt = GetData(); 
      ReportDataSource rds = new ReportDataSource("DataSetRel",_dt); 
      _reportViewer.LocalReport.DataSources.Add(rds); 
      _reportViewer.LocalReport.ReportEmbeddedResource = "Project.Rel.rdlc"; 
      _reportViewer.ProcessingMode = ProcessingMode.Local; 

      ReportParameter dt1 = new ReportParameter("dtStart", txtDataS.Text); 
      ReportParameter dt2 = new ReportParameter("dtEnd", txtDataE.Text); 

      _reportViewer.LocalReport.SetParameters(new ReportParameter[] {dt1,dt2}); 
      _reportViewer.LocalReport.Refresh(); 
     } 

Когда я запускаю это приложение, и я ввода начальной даты и конечную дату и нажмите на кнопку Показать ничего не произошло Примечание в моем докладе RDLC У меня есть два параметра dtStart и dtEnd и я использую это как выражение в текстовом поле. В чем проблема? Почему я не могу передать эти параметры в отчет rdlc?

+0

При использовании параметрического запроса SQL не нужны параметры использования в отчете. –

+0

@RezaAghaei, в этом случае, как я могу сделать для отображения ввода с даты и на сегодняшний день в моем средстве просмотра отчетов? –

+0

@RezaAghaei нет. В моем отчете мне нужно получить fromDate и ToDate для отображения в текстовом поле в отчете rdlc, также мне нужно запросить в базе данных. –

ответ

1

Создать форму и поставить ReportViewr на него, то в случае загрузки формы написать такой код:

var reportBindingSource = new System.Windows.Forms.BindingSource(); 

var reportDataSource = new Microsoft.Reporting.WinForms.ReportDataSource(); 
//Name of dataset in your rdlc report 
reportDataSource.Name = "DataSet1"; 
reportDataSource.Value = reportBindingSource; 

this.reportViewer1.LocalReport.DataSources.Add(reportDataSource); 
this.reportViewer1.LocalReport.ReportEmbeddedResource = "StackSamplesCS.Data.Report1.rdlc"; 

//Set parameters 
//These are repot parameters, so use the names that you gave them in report. 
this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("StartDate", this.DatePicker1.SelectedDate.ToString())); 
this.reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("EndDate", this.DatePicker1.SelectedDate.ToString())); 

//put your connection string 
//example: @"data source=(localdb)\v11.0;initial catalog=YourDatabase;integrated security=True;" 
//example @".\sqlexpress;;initial catalog=YourDatabase;integrated security=True;" 
var connection = W"Your Connection String" ; 

//your command 
//example: "SELECT * FROM YourTable WHERE StartDate>@StartDate AND EndDate<@EndDate" 
var command = "Your Command"; 

var tableAdapter = new System.Data.SqlClient.SqlDataAdapter(command, connection); 

//Set Sql Parameters 
tableAdapter.SelectCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@StartDate", this.DatePicker1.SelectedDate)); 
tableAdapter.SelectCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@EndDate", DatePicker2.SelectedDate)); 
var dataTable= new DataTable(); 
//Get data 
tableAdapter.Fill(dataTable); 

reportBindingSource.DataSource = dataTable; 

this.reportViewer1.RefreshReport(); 
  • Пожалуйста, внимательно прочитайте комментарии
  • Посмотрите в вашем докладе, и посмотреть, что это имя DataSet, который он использует
  • Посмотрите в своем отчете и посмотрите, что имя параметра в отчете и использовать при передаче параметров отчета.
  • Используйте параметры в коде не в Отчете