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
,而不是循环。是的,您通常会对记录集这样做,但我想子表单中只列出了少数记录,所以不值得这么麻烦。