程序如下:
 With DataEnvironment1.rscmd_depar
If Not .EOF Or .RecordCount > 0 Then
 
   If MsgBox("是否删除当前记录?", vbYesNo, "系统提示") = vbYes Then
                                    .Delete
                                    .MoveNext     If .EOF And RecordCount > 0 Then .MoveLast
    End If
   End If
 End With删除最后一条时就出错   实时错误'3021'
  BOF或EOF为TRUE,或者当前记录已经删除.应用程序请求的操作需要当前记录.郁闷了半天都搞不懂那有问题,请高手指点.

解决方案 »

  1.   

    将If Not .EOF Or .RecordCount > 0 Then语句中的OR改成AND应该就没问题了
      

  2.   

    晕 看错了
    .Delete 删除最后一条,记录指针已经到了EOF
    在.MoveNext就会出错了
      

  3.   

    我改了还是出错,错误停在 .MoveNext上,不懂什么回事
      

  4.   

    搞不明白LZ为什么要用记录集来删除记录,效率多低。
    当最后一条记录删除后指针就EOF了,再MOVENEXT当然就错了。
      

  5.   

    With DataEnvironment1.rscmd_depar
    If .RecordCount > 0 Then
     
       If MsgBox("是否删除当前记录?", vbYesNo, "系统提示") = vbYes Then
                                        .Delete
                                        If  Not .EOF Then  .MoveNext     If .EOF And RecordCount > 0 Then .MoveLast
        End If
       End If
     End With
      

  6.   

    slmn(自游自在的鱼),你给的这段程序我试过了,删除最后一条时会出错
    这段程序你自己检测过了吗?请高手指点
      

  7.   

    Private Sub Command1_Click()
    With DataEnvironment1.Recordset
    If .RecordCount > 0 Then
     
       If MsgBox("是否删除当前记录?", vbYesNo, "系统提示") = vbYes Then
                                        .Delete
                                        If Not .EOF Then .MoveNext     If .EOF And RecordCount > 0 Then .MoveLast
        End If
       End If
     End With
    End Sub用RECORDSET的时候就没错~~~
      

  8.   

    qiang81020(午夜阳光) ,谢谢你的帮助,但你的程序还是不行。
     
    DataEnvironment1是数据环境,而DataEnvironment1是没有Recordset这个属性的,只有Recordsets这个属性。继续请高手指点。
      

  9.   

    我把程序改成这样就行了,郁闷啊。只是多加了一个错误捕捉而已。On Error GoTo DeleteErr
      
    With DataEnvironment1.rscmd_depar
    If .RecordCount > 0 Then
     
       If MsgBox("是否删除当前记录?", vbYesNo, "系统提示") = vbYes Then
                                        .Delete
                                        .MoveNext
        End If
         If .EOF And RecordCount > 0 Then .MoveLast
     End If
     
     End With
       Exit SubDeleteErr:
      

  10.   

    那是呀?在发现错误的时候上面的操作都完成了?其实他对删除操作没什么意义.
      要不你在加一个判断
       if .eof=ture or .bof=ture then
               exit sub
          end if
      

  11.   

    需要这样删除吗?,直接一条语句多简洁、高效
    adore.Execute "delete from 表名 where 条件" 
    就可以将满足条件的语句全部删光了
      

  12.   

    同意楼上的,用SQL语句,简洁明了.