Способ загрузки данных между датами в программе просмотра отчетов в C# - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь получить данные между двумя датами в элементе управления просмотра отчетов в формах windows. Фильтрация данных отчета, поэтому я изменил набор данных с помощью параметров на

select SN,invoice_date,product_code........ where invoice_date >= @date1 and invoice_date <= @date2

Я пробовал это также

select SN,invoice_date,product_code........ where invoice_date between @date1 and @date2

Но запрос не получает никаких данных, тип данных, который я использовал в SQL Сервер - это дата, и я изменил свойства набора данных @ date1 и @ date2 на date. Таким образом, проблема в том, что используемый datetimepicker не работает, так как добавляет время к значению. И я попытался проверить datetimepicker во что-то вроде

datetimepicker1.value.date.toshortdatestring()   even tried  datetimepicker1.value.tostring()

Но проблема в том, что он выдаст ошибку, что system.datetime не может быть преобразовано в строку. Я даже изменяю тип данных @ date1 и @ date2 на varchar в свойствах набора данных, но все еще не загружаюсь.

Итак, этот код пробовал

this.Sales_InvoiceTableAdapter.FillByget(this.ProductREP.Sales_Invoice, ProductFrom.Value, ProductTo.Value, txtproductcode.Text);

this.Sales_InvoiceTableAdapter.FillByget(this.ProductREP.Sales_Invoice, ProductFrom.Value.Date, ProductTo.Value.Date, txtproductcode.Text);

Чего мне не хватает? Я использую C# с SQL Сервером.

1 Ответ

0 голосов
/ 28 апреля 2020

Предполагая, что подпись Sales_InvoiceTableAdapter.FillByget равна FillByget(string invoice, DateTime from, DateTime to, string productCode), вам не нужно преобразовывать строку, и вы должны проверить, правильно ли вы устанавливаете часть времени.

this.Sales_InvoiceTableAdapter.FillByget(this.ProductREP.Sales_Invoice, ProductFrom.Value.Date, ProductTo.Value.Date.AddDays(1), txtproductcode.Text);

Учитывая ProductFrom.Value и ProductTo.Value равно 2020-04-28T10:55:00, приведенный выше код приведет к ProductFrom.Value = 2020-04-28T00:00:00 и ProductTo.Value = 2020-04-29T00:00:00.
Если вы хотите получить значения только в этот указанный c день (исключая полночь), тогда вычтите 1 секунду из вашего окончательного значения to. например, ProductTo.Value.Date.AddDays(1).Subtract(TimeSpan.FromSeconds(1)).

...