Диапазон дат фильтра — от даты до даты — DataTable

Я относительно новичок в C #, но учусь. У меня есть DGV с таблицей Returns, а столбец Date — DateOfEntry. Я думал, что настроить это будет довольно просто ... но я продолжаю получать ошибки Operand, и я не уверен, почему. Я исследовал это без конца и безуспешно пробовал различные подходы. Ниже приведен код, который я использую, может кто-нибудь объяснить мне, что я могу делать неправильно?

Использование и доступ к файлу .mdb в качестве базы данных

returnsBindingSource.Filter = ("Select * from Returns where DateOfEntry 
between '"+dateTimePicker1.Value.ToString()+"' and  
'"+dateTimePicker2.Value.ToString()+"'");

person Rick    schedule 12.03.2016    source источник


Ответы (1)


Вы не должны назначать оператор выбора как BindingSource.Filter. Требуется выражение строкового фильтра, которое следует за этими синтаксис выражения.

На самом деле это механизм фильтрации на стороне клиента, который не требует обращения к серверу базы данных для фильтрации данных. Когда вы назначаете выражение фильтра для BindingSource.Filter, фильтр будет применяться к базовому источнику данных, например к вашему DataTable.

Таким образом, вы должны загрузить данные в событии Load формы, а затем применить фильтр к загруженным данным в событии Click, например, кнопки фильтра.

Значения даты должны быть заключены в знаки #. Например:

returnsBindingSource.Filter =
    String.Format("DateOfEntry >= #{0:yyyy/MM/dd}# AND DateOfEntry <= #{1:yyyy/MM/dd}#",
    dateTimePicker1.Value,
    dateTimePicker2.Value);
person Reza Aghaei    schedule 12.03.2016
comment
Реза, это имеет смысл. Спасибо, что нашли время объяснить основные принципы кода. В очередной раз благодарим за помощь. - person Rick; 13.03.2016