ADOTable.Filter := 'nf=2003 and yf=3 and (zj> 0 or sfje>0 or zmbje>0 or dldje>0) ';
如上,我想在程序执行时加上过滤条件,但ADOTable.Filter 好象不支持以上写法,
(问题好象在那个括号,但去掉括号又达不到我的目的)我该如何些以达到我的目的?
如上,我想在程序执行时加上过滤条件,但ADOTable.Filter 好象不支持以上写法,
(问题好象在那个括号,但去掉括号又达不到我的目的)我该如何些以达到我的目的?
ADOTable.Filter := 'nf = 2003 and yf = 3 and (zj > 0 or sfje > 0 or zmbje > 0 or dldje > 0) ';
可以拆开成另一种方式试试:
'(nf=2003 and yf=3 or zj> 0) or (nf=2003 and yf=3 or sfje>0)or......'
ADOTable.Filtered:=false;
ADOTable.Filter :=str1;
ADOTable.Filtered:=true;
ADOTable.Filtered:=false;
ADOTable.Filter :=str2;
ADOTable.Filtered:=true;
.......
where nf=2003 and yf=3 and (zj> 0 or sfje>0 or zmbje>0 or dldje>0)
ADOTable.Filter := '(nf=2003) and (yf=3) and ((zj> 0) or (sfje>0) or (zmbje>0) or (dldje>0)) ';
adotable.filtered:=true;
有时候扩号能起到意想不到效果(好坏都有:))
不行还是建议用另外一个Query得出符合条件的记录后再通过关键字循环组织filter字符串。
ADOTable.Recordset := ADOQue.Recordset; 的方法了,因为我这个ADOTable在其他地方也引用了,不能用ADOQue直接替代ADOTable.