我的table中有一列(生日),需要按照其月、日部分作筛选,例如:
FilterString = "Month(生日)=" + selectedMonth + " AND Day(生日)=" + selectedDay;
FoundRows = DS.Tables[0].Select(FilterString);
现在报错,“表达式包含未定义的函数调用 Month()。”请大虾们指点一下应该如何实现。多谢了,解决立即揭帖,分少可以再加。

解决方案 »

  1.   

    FilterString="字段名="+selectedMonth+"and 字段名="selectedDay;
      

  2.   

    sorry lz的这个需求还是需要数据库来解决 在ds中只允许使用有限的一些表达式可以在数据库得到结果集时就把月份和日期都取出来,作为额外的两列来用,在前端可以使用列绑定,不显示此二列即可
      

  3.   

    三楼的方法,实现起来也不麻烦。因为用数据库的month(),Day()函数处理比较方便。
    如果数据量不是很大的话。可以考虑遍历table。
    取出生日字段的字符,然后解析内容,根据条件判断。
      

  4.   

    Dataset中的结果集应该根据 月和日 这俩查询条件返回,不把全部数据填充到dataset中在筛选
      

  5.   

    ds中的RowFileter支持如下的表达式参考msdn帮助文档
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref4/html/P_System_Data_DataColumn_Expression.htm
      

  6.   

    DataColumn.Expression只支持有限的函数所以你只能另外想办法比如把这列弄成string的
    或者把月份和日期拼成日期型字段
    让生日去between关于DataColumn.Expression的详细说明
    请参考MSDNhttp://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx
      

  7.   

    jiatong1981 、lovefootball 两位大哥,多谢,解决了。