代码如下:
datamodule1.adoquery1.sql.clear;
datamodule1.adoquery1.sql.add('select fd_id from fd');
datamodule1.adoquery1.open;
try
if not datamodule1.adoquery1.eof then
begin
fdid:=datamodule1.adoquery1.fields[0].asstring+'1';
         end;
finally
datamodule1.adoquery1.close;
end;
我的表是空表
调试到.close这一句就会出现下面的提示:
BOF或EOF中有一个是"真",或当前记录已被删除,所需操作要求一个当前的记录不知道是什么缘故?

解决方案 »

  1.   

    在关闭AdOQuery之前,应该先关闭AdoQuery的数据集,
    代码:
         AdoQuery1.RecordSet.close;
         AdoQuery1.Close;
      

  2.   

    ADO没升级之前的BUG,快升级吧。
      

  3.   

    为什么要这样呢?
    如果查询结果不为空,也会出现上面那种情况;
    我加了句adoquery1.first就不会了
    但是为什么会这样呢?
    还望指教
      

  4.   

    LingHai(岭海),加了那句后,就OK了,太感谢了.
    如果查询结果不为空,也会出现上面那种情况;
    我加了句adoquery1.first就不会了
    但是为什么会这样呢?
    还望指教
      

  5.   

    fdid:=datamodule1.adoquery1.fields[0].asstring;
    datamodule1.adoquery1.next;
      

  6.   

    去打补丁,如果你用的是Access的话,那么现在就去;
    ADO升级版。。
      

  7.   

    我找了很多地方,下回来装了,结果连ADO组件都全没了,给个能用的