过滤日期范围 - 从日期到日期 - DataTable

时间:2016-03-12 18:06:23

标签: c# .net winforms datagridview datatable

我对C#比较新,但学习。我有一个名为Returns的表的DGV,Date列是DateOfEntry。我认为设置它会相当简单..但我一直得到操作数错误,我不知道为什么。我已经研究过这个并没有结束,并尝试了各种方法,没有运气。以下是我正在使用的代码,有人可以向我解释我可能做错了吗?

使用和访问.mdb文件作为数据库

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

1 个答案:

答案 0 :(得分:1)

您不应将select语句指定为BindingSource.Filter。它需要一个字符串过滤器表达式,它遵循这些expression syntax

实际上,它是一种客户端过滤机制,不需要往返数据库服务器来过滤数据。将过滤器表达式分配给BindingSource.Filter时,过滤器将应用于基础数据源,例如DataTable上。

因此,您应该在表单的Load事件中加载数据,然后在过滤器按钮的Click事件中对加载的数据应用过滤器。

日期值应包含在#符号中。例如:

returnsBindingSource.Filter =
    String.Format("DateOfEntry >= #{0:yyyy/MM/dd}# AND DateOfEntry <= #{1:yyyy/MM/dd}#",
    dateTimePicker1.Value,
    dateTimePicker2.Value);