一个普通的数据库查询程序而已。在98、ME、2000下调试都通过,但在XP下,只能查一次,当点击“重新查找”的时候就报错,说“bof 或eof中有一个是真,或者当前的记录已被删除,无法进行操作"。勉强重新查找的话,就会提示数据集已经打开,不能操作。
查找按钮的相关代码如下:
  ADOQuery1.close;
  ADOQuery1.SQL.Clear;
  sqlstr:='select *  from data where year=';
  sqlstr:=sqlstr+'''+Edit1.Text+''';
  ADOQuery1.SQL.Add(sqlstr);
  ADOQuery1.ExecSQL;
  ADOQuery1.open;重新查找的相关代码如下:
  with ADOQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT * FROM data');
    ExecSQL;
  end;我用的是ado数据集。明明在重新查找的时候close了ADOQuery,也没有移动指针什么的,为什么有那样的报错呢?

解决方案 »

  1.   

    估计是ado用到的Dll的版本不一样吧.
      

  2.   

    ado的一個bug﹐需要打補丁﹐然后重新編譯。
      

  3.   

    ADOQuery1.close;
      ADOQuery1.SQL.Clear;
      sqlstr:='select *  from data where year=';
      sqlstr:=sqlstr+'''+Edit1.Text+''';
      ADOQuery1.SQL.Add(sqlstr);
      //-----------------------
      //ADOQuery1.ExecSQL;//去掉一个试试
      ADOQuery1.open;
      //-----------------------
      //这里为什么要执行两次SQL???
      //-----------------------
      

  4.   

    我下载了adoupdate,重新编译后在XP下运行正常了。谢谢!