ADOTable.Filter := 'nf=2003 and yf=3 and (zj> 0 or sfje>0 or zmbje>0 or dldje>0) ';
如上,我想在程序执行时加上过滤条件,但ADOTable.Filter 好象不支持以上写法,
(问题好象在那个括号,但去掉括号又达不到我的目的)我该如何些以达到我的目的?

解决方案 »

  1.   

    比较符前后都加上空格试试:
    ADOTable.Filter := 'nf = 2003 and yf = 3 and (zj > 0 or sfje > 0 or zmbje > 0 or dldje > 0) ';
      

  2.   

    filter就是这么讨厌!
    可以拆开成另一种方式试试:
    '(nf=2003 and yf=3 or zj> 0) or (nf=2003 and yf=3 or sfje>0)or......'
      

  3.   

    //多次过滤
    ADOTable.Filtered:=false;
    ADOTable.Filter :=str1;
    ADOTable.Filtered:=true;
    ADOTable.Filtered:=false;
    ADOTable.Filter :=str2;
    ADOTable.Filtered:=true;
    .......
      

  4.   

    為什麼不使用ADOQuery直接寫SQL語句呢?select * from TableName
     where nf=2003 and yf=3 and (zj> 0 or sfje>0 or zmbje>0 or dldje>0)
      

  5.   

    adotable.filtered:=false;
    ADOTable.Filter := '(nf=2003) and (yf=3) and ((zj> 0) or (sfje>0) or (zmbje>0) or (dldje>0)) ';
    adotable.filtered:=true;
    有时候扩号能起到意想不到效果(好坏都有:))
      

  6.   

    楼主,这边怎么还有?
    不行还是建议用另外一个Query得出符合条件的记录后再通过关键字循环组织filter字符串。
      

  7.   

    都不行啊!看来我只有先用一个ADOQuery写SQL语句,然后用
    ADOTable.Recordset := ADOQue.Recordset; 的方法了,因为我这个ADOTable在其他地方也引用了,不能用ADOQue直接替代ADOTable.
      

  8.   

    另用query再组织filter是可以的。