用 try  except  好像不是正途  好像是个bug  还是代码写的有问题假如现在正打开着一个记录集合 并过滤了某 个字段 
  with ADOQuery2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM bm_cbz ');
    Open;
  end;重新给一个记录集合   with ADOQuery2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM press where cbd=''北京'' ');
    Open;
  end;就会出现以上错误    
close 也会出现

解决方案 »

  1.   

    好像dxDBGrid也有这个问题。要先把过滤的条件取消掉才行。
      

  2.   

    你把filer的条件设置为只读呢?
      

  3.   

    这个问题我前几个月遇到过,如下解决一定行:
    在ADOQuery2的afterclose事件中将filter属性设置为空.
    adoquery2.filter:='';
      

  4.   


    刚测试了一下  还是不行呀   在进入 afterclose 前就已经报错  请问您是怎么解决的 ?
      

  5.   

    对不起,我记错了,应该是:在ADOQuery2的afterclose事件中将IndexFieldNames:=''; 
      

  6.   


    ADOQuery2 中没有 IndexFieldNames 属性呀 !  我用的 D7  只有   adoquery2.IndexName 可惜不是这个请您再确认  
    另外afterclose 跟踪进入前就报错了。