C#断开式数据库连接的DataView数据筛选的问题
dv.RowFilter = string.Format("DATENAME(MONTH,日期)='{0}'", 1); //筛选语句
按道理表达式的值会是我时间的月份和1比较,但是出现异常了我不知道为什么
异常信息是 【表达式包含未定义的函数调用 DATENAME()】
菜鸟求解
数据库
c#
------解决方案--------------------楼主我个人觉得 dataview 是对datatable内的数据进行筛选,而不是数据库
------解决方案--------------------dv.RowFilter = string.Format("MONTH(日期)='{0}'", 1);
这样行吗
------解决方案--------------------RowFilter 不支持 数据库里某些函数,你只能用其他方式来解决
如,你在查询的时候,就把月份作为附加的一列选出来(把此列在界面隐藏),然后用这列来过滤
------解决方案--------------------两个概念.
数据库查找,可以使用数据库相关函数.
而dataview 中的筛选,有自己相应的函数继规则,筛选条件一般直接使列名称=??这样的格式
------解决方案--------------------RowFilter 不支持DATENAME这个函数
这里有比较年的代码,你可以参考它修改下:
bigDT.DefaultView.RowFilter = "CONVERT(SUBSTRING(CONVERT(date_posted, 'System.String'), 5, 4), 'System.Int32')=2012";
代码来自:
http://stackoverflow.com/questions/9201816/add-rowfilter-condition-for-datetime-year-only-check
------解决方案--------------------RowFilter不是dataview的筛选吗,怎么能对数据库进行操作
------解决方案--------------------DataColumn.Expression 并不完全等同sql,他有自己的规定
这些具体规定可以去看msdn
http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression%28v=vs.80%29.aspx
------解决方案--------------------
datename() 是数据库里的函数 dataview里 有这个函数吗