当TADOQuery进行了Filter的操作后,进行Locate则会产生不能正确找到记录的问题,即使Locate返回真,但是也不能正确移动到正确的记录中。
员工编号,产品编号,规则
001,00231,1型
001,00266,2型
002,00233,3型
002,00238,4型
001,00290,5型
  with adoquery do
  begin
    Filtered:=False;
    Filter:='员工编号=''002''';
    Filtered:=True;    if Locate('产品编号','000238',[]) then
      MessageDlg(FieldByName('规则').AsString, mtError, [mbOK], 0);
  end;最后应该显示“4型”,但实际显示的是“3型”,为啥子咧?

解决方案 »

  1.   

    在Google已经找到自己的主题了http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2005-05/msg00136.html别人也遇上相同的问题。
      

  2.   

    你可以在Filter属性中把所有查询条件都写进去,没有必要用Locate函数。
      

  3.   

    重新设置Filter是一个好办法,不过测试后,感觉慢一些,还不如First,然后while NEXT快一些。