我的删除代码是这么写的:  if MessageBox(Handle, '确认删除选中的记录?', strCaption, MB_YESNO +
    MB_DEFBUTTON2 + MB_ICONQUESTION) = mrYES then
  begin
    try
      with ADODataSet1 do
      begin
        Edit;
        FieldByName('State').AsString := '废码';
        Post;
        ShowMessage(IntToStr(RecordCount));
      end;
    finally
    end;
  end;不是将数据物理删除,而是加了一个修改了标志字段State。adodateset的过滤器过滤了所有的废码记录,但是在删除最后一条记录的时候出了问题,我不知道是怎么了错误信息为:---------------------------
Debugger Exception Notification
---------------------------
Project PAPSoft2.exe raised exception class EOleException with message 'BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
请高手指教

解决方案 »

  1.   

    循环代码有问题,贴出来吧
    是不是delete之后又next
      

  2.   

    根本就没有delete,只是把记录的状态改成‘废码’了。不是物理删除的啊
      

  3.   

    我的拙见:'State'字段原先是否有值,如果有就不能用Edit,应该用Sql语句更新 
      

  4.   

    一般出这种错误,最大的原因出在游标超出有效的范围了。My Email:[email protected]
      

  5.   

    你用的是delphi5 吗.delphi5的ADO是有这个错误的,这是一个BUG.用D6或用D5加补丁包就可以解决了.