AdoQuery1.Open;
AdoQuery1.First;
While not AdoQuery1.Eof do
begin
  AdoQuery1.Next;
end;
AdoQuery1.close;

解决方案 »

  1.   

    升级Ado看一下,你上面的代码没有错
      

  2.   

    感谢大家的答复;
        but数据库是一个空数据库;open 或 close 都会产生bof or eof 异常;
    实际上我知道tAdoQuery.recordset.close 即使在bof,eof 也不会产生异常;
       but 我已使用tAdoQuery很多;修改太浪费time;早知道我直接使用adoInt
    单元的_recordset,_recordSet15,_command......或者直接导入ado类型库 ;
    我觉得com接口好用;而且这是一个dcom服务器程序;可视化设计并未带来很多好处。
        我认为这是delphi 的一个失败ado封装;
        希望再给我提示;和我交流 。
      

  3.   

    我以前也遇到过,升级ADO即可!这个问题是由pack2解决的,可到以下网页下载:http://www.borland.com/devsupport/delphi/mdac26.html
      

  4.   

    感谢大家和xzxzzhy,delphi6存在这个问题吗?
      

  5.   

    D6没有这个问题,这是D5的大Bug,打上补丁就好了!
      

  6.   

    不过PACK1在哪??没有PACK1,PACK2可打不上去
      

  7.   

    把代码变成:
    AdoQuery1.Open;
      AdoQuery1.First;
      While  not  AdoQuery1.Eof  do
      begin
          AdoQuery1.Next;
      end;
      AdoQuery1.First;//关键在加多这一句。
      AdoQuery1.close;
      

  8.   

    下面这段代码我试过在EXE里是不会出错的:
    with ADOQuery1 do
      begin
        try
          Recordset.Close;
          Close;
        except
          Close;
        end;
        SQL.Clear;
        SQL.Add('......');
        ADOQuery1.Prepared;
        Open;
      end;
      

  9.   

    下面这段代码我试过也是不会出错的
    with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from '+Edit2.Text+' where '+Edit3.Text+' = '''+Edit1.text+'''');
        ADOQuery1.Prepared;
        Open;
        if RecordCount = 0 then
          Recordset.Close;
      end;不过在窗口关闭时最好是关闭ADOQuery1。
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      ADOQuery1.Close;
    end;