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;
0
推荐到鲜果:


评论
(fMaterielId=1 _and id=1) or (fMaterielId=2 _and id=2)
也就是在同一层次上,不能同时存在And和Or。
发布者 匿名用户
2008-9-1 21:57:03