procedure TForm1.Button1Click(Sender: TObject);
var
  vQuery: TADOQuery; 
begin
  vQuery := TADOQuery.Create(nil); 
  vQuery.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Test;Data Source=(local)';
  vQuery.SQL.Text:='select * from Table1 ';
  vQuery.Open;
  if vQuery.RecordCount>0 then
     vQuery.Free  //不会出错
  else
     vQuery.Free; //出错,[BOF或EOF中有一个是"真",或者当前的记录已被删除,所需的操作要求一个当前的记录]
end;用Delphi 5,后台数据库采用SQLServer 2000 ,用ADO方式连接,不知什么原因出错;如果用BDE方式连接,以上代码都不会出错。 不知什么原因出错,请教各为高手。谢谢!

解决方案 »

  1.   

    if vQuery.RecordCount>0 then
         vQuery.Free  //不会出错
      else begin
         vQuery.close;
         vQuery.Free; 
      end;
      

  2.   

    if vQuery.RecordCount>0 then
         vQuery.Free  //不会出错
      else begin
         vQuery.close; //这里出错
         vQuery.Free; 
      end;
      

  3.   

    升级你的ADO,
    老板本:
    当ADO中的记录指针为空时(即无记录)时,会有此问题!
      

  4.   

    对,我的ADO升级过了,试了你的代码没有问题。
      

  5.   

    http://www.csdn.net/cnshare/soft/4/4541.shtm