畅享博客 > 安仕达信息化分享 > [求助]微软ADO 的 FILTER BUG 真是糟糕
2008-8-28 17:37:34

[求助]微软ADO 的 FILTER BUG 真是糟糕

以前就听说 ADO 的过滤有BUG,还不怎么相信,毕竟发表了5、6年了,而且微软是个著名的国际大公司,直到最近因为项目优化的关系,需要使用一下他的过滤功能,结果发现问题很严重,只要在过滤条件中用括号包含一个 OR 条件,过滤就会报告错误“参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。”,唉,无语了。

 

测试代码如下:

var
  qry1: TADOQuery;

  qry1 := TADOQuery.Create(Self);
  with qry1 do
  begin
    Name := 'qry1';
    Active := True;
    CacheSize := 1000;
    ConnectionString :=
      'Provider=SQLOLEDB.1;Password=masterkey;Persist Security Info=Tru' +
      'e;User ID=sysdba;Initial Catalog=IBM;Data Source=KF1';
    CursorLocation := clUseServer;
    Filter := '(fMaterielId=1) or (fMaterielId =1) and (fMaterielId =1)';
    Parameters := <>;
    Prepared := True;
    SQL.Clear;
    SQL.Add('select * from PCode_Materiel');
  end;


推荐到鲜果:

评论

这种_and 和Or组合的是不行的,ADO好像并没有说支持,但是下面这样的是支持的:
(fMaterielId=1 _and id=1) or (fMaterielId=2 _and id=2)
也就是在同一层次上,不能同时存在And和Or。

发布者 匿名用户
2008-9-1 21:57:03


您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)