Vba 运行时错误3021';没有当前记录';!

Vba 运行时错误3021';没有当前记录';!,vba,ms-access,delete-row,Vba,Ms Access,Delete Row,我正在尝试创建一个用于删除行的按钮函数 我的代码: CurrentDb.Execute " Delete * from tblAsset where AssetID = '" & Me.tblAssetsub.Form.Recordset.Fields(0) & "' " tblAssetsub.Form.Requery MsgBox "Data has been Deleted" Me.tblAssetsub.Requery 问题是,有时,当我单

我正在尝试创建一个用于删除行的按钮函数

我的代码:

 CurrentDb.Execute " Delete * from tblAsset where AssetID = '" & Me.tblAssetsub.Form.Recordset.Fields(0) & "' "
   tblAssetsub.Form.Requery
       MsgBox "Data has been Deleted"
    Me.tblAssetsub.Requery

问题是,有时,当我单击按钮时,即使有选定的数据,也会出现错误。请帮助我。

您可以使用RecordsetClone:

Dim rs As DAO.Recordset
Dim ThisID As String

With Me!tblAssetsub.Form
    Set rs = .RecordsetClone
    If rs.RecordCount > 0 Then
        ThisID = !AssetID.Value ' or what matches .Fields(0).
        While rs.EOF = False
            If rs!AssetID.Value = ThisID Then
                rs.Delete
            End If
            rs.MoveNext
        Wend
        MsgBox "Data has been deleted."
    End If
    Set rs = Nothing
End With  

无需重新查询。

您可以使用RecordsetClone:

Dim rs As DAO.Recordset
Dim ThisID As String

With Me!tblAssetsub.Form
    Set rs = .RecordsetClone
    If rs.RecordCount > 0 Then
        ThisID = !AssetID.Value ' or what matches .Fields(0).
        While rs.EOF = False
            If rs!AssetID.Value = ThisID Then
                rs.Delete
            End If
            rs.MoveNext
        Wend
        MsgBox "Data has been deleted."
    End If
    Set rs = Nothing
End With  

无需重新查询。

错误发生在哪一行?错误发生时,
Me.tblassetsb.Form.Recordset.Fields(0)
?错误发生在哪一行?错误发生时,
Me.tblassetsb.Form.Recordset.Fields(0)
的值是多少?无需重新查询。这真是太棒了。我总是使用一个相当复杂的函数,在通过代码删除和随后的重新查询后返回下一个(或上一个)记录,但这非常简单,用户友好。非常感谢!:)次要提示:我会使用
rs.FindFirst
来定位匹配的记录,甚至是
rs.Bookmark=Form.Bookmark
,而不是循环。是的,您通常会对记录集这样做,但我想子表单中只列出了少数记录,因此不值得费事。不需要重新查询。这真是太棒了。我总是使用一个相当复杂的函数,在通过代码删除和随后的重新查询后返回下一个(或上一个)记录,但这非常简单,用户友好。非常感谢!:)次要提示:我会使用
rs.FindFirst
来定位匹配的记录,甚至是
rs.Bookmark=Form.Bookmark
,而不是循环。是的,您通常会对记录集这样做,但我想子表单中只列出了少数记录,所以不值得这么麻烦。