从记录集中删除项目时出现错误3021

时间:2013-08-06 14:04:41

标签: vba ms-access access-vba

当我使用下面的代码时,我有时会收到错误3021.这只会在记录集中有一条记录时发生。你能告诉我为什么,以及如何解决它?看来我已经尝试了一切!

由于

Private Sub cmdDelSelectedAction_Click()

response = MsgBox("Are you sure?", vbYesNo, "Confirmation required")
If response = vbNo Then Exit Sub

If Me.[Arrangement-Actions subform].Form.Recordset.EOF Then
    Me.[Arrangement-Actions subform].Form.Recordset.MovePrevious
End If

If Me.[Arrangement-Actions subform].Form.Recordset.BOF Then
    Me.[Arrangement-Actions subform].Form.Recordset.MoveNext
End If

Me.[Arrangement-Actions subform].Form.Recordset.Delete
Me.[Arrangement-Actions subform].Form.Recordset.MoveNext

End Sub

1 个答案:

答案 0 :(得分:0)

已经有一段时间了,但我认为代码看起来像这样:

Private Sub cmdDelSelectedAction_Click()
  Dim rec As Recordset = Me.[Arrangement-Actions subform].Form.Recordset
  If Not rec.BOF Or Not rec.EOF Then
    If MsgBox("Are you sure?", vbYesNo, "Confirm") = vbYes Then
      rec.Delete
    End If
  End If
End Sub

我觉得有点奇怪的是,在您的代码中,您会要求确认删除记录,然后在删除记录之前,您将在记录集上执行MoveNext或MovePrevious。我会远离这样做,因为最终用户可能正在删除与他们预期不同的记录。