adotable:dm.table.filtered:=false;
dm.table.Filter:='cc=''cccc'' and aa=''dddd'' or bb=''bbbb'  ';
dm.table.Filtered:=true;成功!dm.table.filtered:=false;
dm.table.Filter:='cc=''cccc'' and (aa=''dddd'' or bb=''bbbb')  ';
或 dm.table.filter:='cc=''cccc'' or bb=''bbbb'' and aa=''aaaa'' '
dm.table.Filtered:=true;失败! 为什么??
另外
dm.table.FilterOptions:=[foCaseInsensitive];
失败,如何实现模糊查询?

解决方案 »

  1.   

    dm.table.Filter:='cc=''cccc'' and (aa=''dddd'' or bb=''bbbb'')  ';
      

  2.   

    同意楼上的,在bbbb后面要接两个引号。
    这几天看到好多因为引号导致的问题,唉~
      

  3.   

    其实,在cs上的数据库设计,最好不要用adotable,效率会比较低。最好用adoquery,然后用sql语句实现模糊查询。至于上面的错误,可以自己调试一下,最简单的:加个showmessage就可以很清楚的看出你的语句少一个引号的。
      

  4.   

    是的啊,用table控件效率比较低,
    模糊查询在Filter里也可以使用,可以用like '*关键字'的形式
      

  5.   

    多个引号少个引号这样的错误,最好把SQL.text先SHOW出来看看就明白了
      

  6.   

    上面我写错了,接两个引号仍然不行的。dm.table.Filter:='cc=''cccc'' and (aa=''dddd'' or aa=''bbbb'')  ';
    运行提示'变量不在接受范围之内,或与其他数据冲突'!苦恼啊!
      

  7.   

    下面是在实际工作中总结出来的,看一下是不是这样:
    1.filter 不能用in操作,通配用a*;
    2.filter 不支持a and (b or c),要改写成(a and b) or (a and c)
    3.filter 不能用is NULL来过滤,而可用= NULL