是不是你没有进行判断就进行对以为已经取得的数据进行操作了?
可以在查询后,操作前加个判断if adoquery1.isempty then
 begin
   进行你后面的操作

解决方案 »

  1.   

    使用adoquery查询数据库纪录。如果返回空记录集系统是不会报错的,
    一定是你的代码有问题。
    你可以这样
    if adoquery.recordcount<> then
      你的代码。
      

  2.   

    我同意上层意见,我使用了这么多次,从没出现过问题的使用adoquery查询数据库纪录。如果返回空记录集系统是不会报错的,
    一定是你的代码有问题。
    你可以这样
    if adoquery.recordcount>0 then
      你的代码。
      

  3.   

    代码
    adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select top 1 * from Disk_task where isOver = 0');
    try
    adoquery.open;
    execupt
    adoquery.close; 
    exit
    end;
    if not adoquery.eof then
    showmessage(adoquery.fieldbyname('task_name').as string);
    end if
    关闭窗体时,如果空记录,就会返回一个错误说必须有一个记录或记录已经被删除
      

  4.   

    您使用的是D6还是D5?如果是D5,可能是ado的bug,升级一下应该没问题了.
    =======Try It======
      

  5.   

    可能是因为使用了D5吧. D5中的ado有这个bug.
      

  6.   

    Delphi5的ADO控件有Bug,如果某次查询的结果是空的,那么当再次查询或是设置ADOQuery.Active := False时,会报错。
    解决的方法是安装Delphi5的ADO补丁。
      

  7.   

    看看delphih官方网站里的update吧
    已经解决了
      

  8.   

    你是不是在本地机上安有msSQL?