У меня есть набор данных, который генерирует количество строк в таблице табликса в отчете RDL C. Я использую диапазон дат для фильтрации данных, которые будут отображаться. Отчет работает нормально, если диапазон дат до 30 декабря, но когда я включил диапазон 31 декабря в любой год, он не создает данные за указанный день.
Мой запрос в наборе данных:
SELECT hencdiag.diagcode, hadmlog.hpercode, CONCAT(hperson.patlast, ', ', hperson.patfirst, ' ', hperson.patmiddle) AS name, hcity.ctyname AS district, haddr.ctycode, hadmlog.disdate
FROM hadmlog INNER JOIN hperson ON hadmlog.hpercode=hperson.hpercode INNER JOIN haddr ON hadmlog.hpercode=haddr.hpercode INNER JOIN hencdiag ON hadmlog.enccode=hencdiag.enccode INNER JOIN hcity ON haddr.ctycode=hcity.ctycode
WHERE (hcity.ctyname = ?) AND (hencdiag.diagcode IN (?, ?)) AND (hadmlog.disdate >= ?) AND (hadmlog.disdate <= ?) AND
(hencdiag.primediag = 'Y') AND (hencdiag.tdcode = 'FINDX') AND (haddr.haddrdte =
(SELECT MAX(haddrdte) FROM haddr WHERE (haddr.hpercode = hperson.hpercode)))
ORDER BY name
В ReportViewer
private void lbl_print_refrsh_Click(object sender, EventArgs e)
{
this.DemographTAdpterTableAdapter.Fill(this.DemographDataSet.DemographTAdpter, _ctynme.Text = this._hims_dmgrphc.CtyName, _icddiag.Text = this._hims_dmgrphc.DiagNoSis, _icddiag2.Text = this._hims_dmgrphc.DiagNoSis1, DtePckr1.Value = this._hims_dmgrphc.DTPicker, DtePckr2.Value = this._hims_dmgrphc.DTPicker1);
ReportParameter[] Rparam = new ReportParameter[]
{
new ReportParameter("ctyname", _ctynme.Text.ToString()),
new ReportParameter("diagcode", _icddiag.Text.ToString()),
new ReportParameter("diagcode1", _icddiag2.Text.ToString()),
new ReportParameter("disdate", DtePckr1.Value.Date.ToString()),
new ReportParameter("disdate1", DtePckr2.Value.Date.ToString())
};
rptdsch0.LocalReport.SetParameters(Rparam);
rptdsch0.RefreshReport();
IN hims_dmgrph c
public DateTime DTPicker
{
get { return _FromDateTimeRep.Value; }
set { _FromDateTimeRep.Value = value; }
}
public DateTime DTPicker1
{
get { return _ToDateTimeRep.Value; }
set { _ToDateTimeRep.Value = value; }
}
Когда я использую представление данных для создания данных в любом диапазоне дат, у него вообще нет проблем.
Обновление (ReportViewer.cs) Я внес некоторые изменения здесь и добавил строку для преобразования значения datetimepicker со специфицированным c форматом строки и поместил строковые переменные в ReportParameter. Результат был все тот же, не получая диапазон 31.12.2020 23:59:00 в моей фильтрации datetimepicker. this._hims_dmgrph c .DTPicker является struct.System.DateTime.
private void lbl_print_refrsh_Click(object sender, EventArgs e)
{
//DemographTAdpterBindingSource.DataSource = DemographDataSet.DemographTAdpter.ToList();
//demographDataSetBindingSource.DataSource = DemographDataSet.DemographTAdpter.ToList();
string df1 = DtePckr1.Value.ToString("yyyy-MM-dd 00:00:00");
string dt1 = DtePckr2.Value.ToString("yyyy-MM-dd 23:59:00");
this.DemographTAdpterTableAdapter.Fill(this.DemographDataSet.DemographTAdpter, _ctynme.Text = this._hims_dmgrphc.CtyName, _icddiag.Text = this._hims_dmgrphc.DiagNoSis, _icddiag2.Text = this._hims_dmgrphc.DiagNoSis1, DtePckr1.Value = this._hims_dmgrphc.DTPicker, DtePckr2.Value = this._hims_dmgrphc.DTPicker1);
//this.DemographTAdpterTableAdapter.Fill(this.DemographDataSet.DemographTAdpter, DtePckr1.Value = this._hims_dmgrphc.DTPicker, DtePckr2.Value = this._hims_dmgrphc.DTPicker1);
ReportParameter[] Rparam = new ReportParameter[]
{
new ReportParameter("ctyname", _ctynme.Text.ToString()),
new ReportParameter("diagcode", _icddiag.Text.ToString()),
new ReportParameter("diagcode1", _icddiag2.Text.ToString()),
new ReportParameter("disdate", df1),
new ReportParameter("disdate1", dt1)
};
rptdsch0.LocalReport.SetParameters(Rparam);
rptdsch0.RefreshReport();
}