Filter的过滤条件有问题,不能and和or一起用?

caffee_cup 2008-02-22 11:18:13
我写了一个ADOTable上的过滤条件:(A or B) and C
ABC都是简单的条件,在执行Filtered:=true的时候出错:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another
我试过 ABC单独的每个条件都没有问题,A or B or C,A and B and C 都没有问题,就是and和or一起,再加上括号,就出错了
到底是什么原因呢?条件该怎么写呢?
...全文
493 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
刚测了一下,排除了DB的原因,SQL和oracle都报同样的错
排除时间类型的错,测了字符串类型的条件也有同样问题

现在很郁闷啊。。。。。
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
tblParam.Filtered:=false;
tblParam.Filter:='kind_id=1 and (end_date>=''2008/02/22'' or end_date=null)';
tblParam.Filtered:=true;

跑到tblParam.Filtered:=true;的时候报错
开始是有动态参数的,出错以后直接改成这样的,还是不行
gjw310 2008-02-22
  • 打赏
  • 举报
回复
是不是filter设置后,程序不报错,但不是你想要的结果?
我刚才试了下能正常过滤啊
gjw310 2008-02-22
  • 打赏
  • 举报
回复
把你具体的内容贴出来,按道理应该不会的
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
To frank,叶:
试过了,还是不行
gjw310 2008-02-22
  • 打赏
  • 举报
回复
((A) or (B)) and (C)
如果,A,B,C本身都是表达式的话,应该自身就加小括号
不知道你的是不是这个问题
luxuewei5214 2008-02-22
  • 打赏
  • 举报
回复
这么写试试:
c and (a or b)
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
唉,测了一下午,好郁闷

现在解决方法是:

A and (B or C) 改成了 (A and B) or (A and C) 通过了

这只是三个条件的逻辑,但要是再复杂一点的话麻烦就大了



最后还是不晓得到底是什么原因,Filter真是个BT的东东!!!

谢谢大家参加讨论,结贴吧
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
谁来解释一下到底filter的逻辑是什么样子的啊!!
caffee_cup 2008-02-22
  • 打赏
  • 举报
回复
测出个奇怪的问题了!!!

A and B or C-------------ok

A or B and C------------error

(A and B) or C----------ok

A and (B or C)-----------error


SQLServer2000+ADO

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧