【问题标题】:Filter Date Range - from Date to Date - DataTable筛选日期范围 - 从日期到日期 - DataTable
【发布时间】:2016-03-12 18:06:23
【问题描述】:

我对 C# 比较陌生,但正在学习。我有一个带有名为 Returns 的表的 DGV,Date 列是 DateOfEntry。我认为设置它会相当简单..但我不断收到操作数错误,我不知道为什么。我对此进行了无止境的研究,并尝试了各种方法,但都没有运气。以下是我正在使用的代码,有人可以向我解释我可能做错了什么吗?

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

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

【问题讨论】:

  • 您不应将 select 语句指定为 BindingSource.Filter。它需要一个filter expression。当您分配一个新过滤器时,它将应用于您的数据表中的记录,该数据表是绑定源的数据源。

标签: c# .net winforms datagridview datatable


【解决方案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);

【讨论】:

  • Reza,这很有道理。感谢您花时间解释代码的基本原理。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 2016-10-14
相关资源
最近更新 更多