当data1.Recordset.EOF为真时表示游标指针已经最后一条记录之后了,你再使用data1.Recordset.Delete来删除当前记录那肯定会出错啊,因为当前记录为空啊,你一定是Recordset.EOF理解错了,当它为真时表示的是记录集末端,即最后一条记录之后而不是最后一条记录,你可以试着将程序改为以下部分看一下:
...
 If Not data1.Recordset.EOF Then
     data1.Recordset.Delete
     data1.Recordset.MoveLast
     Else
     cmdNEXT.Enabled = False
     cmdLAST.Enabled = False
 End If
...
看一下现在是不是已经实现了你想要的功能了呢?
see it?

解决方案 »

  1.   

    data1.Recordset.MoveLast请把这一句改为data1.recordset.MovePrevious :)
      

  2.   

    就是winnerwang(彷徨)说的那个原因了
      

  3.   

    我觉得你可以在程序度前再加一语句:
    If Data1.Recordset.RecordCount <> 0 Then
       If Not data1.Recordset.EOF Then
          data1.Recordset.Delete
          data1.Recordset.MoveLast
          cmdNEXT.Enabled = False
          cmdLAST.Enabled = False      
       End If
    Else
    MsgBox "库中已经没有记录了,你还要删除什么哪!"
    End If
      

  4.   

    up to : winnerwang(彷徨)
      

  5.   

    I
    应该改为:
    If data1.Recordset.EOF Then
         data1.Recordset.Delete
         cmdNEXT.Enabled = False
         cmdLAST.Enabled = False
         data1.recordset.movenext
    else
        data1.recordset.delete
        data1.recordset.movelast
    end if
      

  6.   

    sorry,写错了
    If data1.Recordset.EOF Then
         data1.Recordset.Delete
         cmdNEXT.Enabled = False
         cmdLAST.Enabled = False
         data1.recordset.MovePrevious 
    else
        data1.recordset.delete
        data1.recordset.movenext
    end if