Проблема с набором данных в моем отчете RDL C, неправильно генерируемая в диапазоне дат, если месяц составляет 31 день - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть набор данных, который генерирует количество строк в таблице табликса в отчете 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();



    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...