ADOQuery的FILTER问题,不会是BUG吧!(200分)

  • 主题发起人 主题发起人 电脑农民
  • 开始时间 开始时间

电脑农民

Unregistered / Unconfirmed
GUEST, unregistred user!
我在ADOQUERY中使用FILTER功能对SELECT的结果进行过滤,
FILTER使用如下语句时正常(且先不讨论结果有何实际意义):
1、ADOQUERY.FILTER:='CLIENTNAME like ''张*'' or CLIENTNAME like ''赵*'' or CLIENTNAME like ''章*''';
2、ADOQUERY.FILTER:='CLIENTNAME like ''张*'' or CLIENTNAME like ''赵*'' or CLIENTNAME like ''章*'' OR IsInvalid = false';
3、ADOQUERY.FILTER:='CLIENTNAME like ''张*'' AND CLIENTNAME like ''赵*'' AND CLIENTNAME like ''章*'' AND IsInvalid = false';

以上三条语句中,各个条件都是全用“OR”或全用“AND”相连的, 但是,如果我使用下面的语句,运行时则会出错:
ADOQUERY.FILTER:='CLIENTNAME like ''张*'' or CLIENTNAME like ''赵*'' or CLIENTNAME like ''章*'' and IsInvalid = false';

我给上面这条语句加上括号也没有用,再测试发现,只要FILTER语句中同时含有“AND”和“OR”时,运行时即出错。

不知道哪位高手能解决。
 
关注了,我想delphi是无法识别这个条件
 
少用filter
 
OR IsInvalid = false
这个条件不行的!
 
这样就可以了:
(CLIENTNAME like '张*' and IsInvalid = false)
or (CLIENTNAME like '赵*' and IsInvalid = false)
or (CLIENTNAME like '章*' and IsInvalid = false)
 
现在类似sql plus的环境下试试sql语句,
如果能够通过,就表用filter了吧。
 
恩,我也才遇到过这样的问题,确实象thinknet,说的可以解决!
真的很麻烦,不知道ADO为什么要做成这样!
 
THINKNET的可行。
 
后退
顶部