sig*_*gil 3 ms-access vba recordset
在 Access 2010 中制作一个表单。我正在尝试制作一个移动到下一条记录的按钮(如果它在最后,则是第一个),但是因为我想考虑其他用户对已发生的数据集的更新同时,我会在转到下一条记录之前重新查询表单。
我正在使用以下代码,改编自这篇 SO 帖子:
Private Sub NextRec_Click()
Dim currentID As Long
currentID = Me.id.Value
'Here is where the requery brings the form back to the first record
Me.Requery
With Me.RecordsetClone
.FindFirst "id=" & currentID
If Not .NoMatch Then
If Me.Dirty Then
Me.Dirty = False
End If
Me.Bookmark = .Bookmark
End If
End With
If Me.CurrentRecord < Me.Recordset.RecordCount Then
DoCmd.GoToRecord , , acNext
Else
DoCmd.GoToRecord , , acFirst
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
它工作正常,除了.requery导致表单在返回到当前记录然后返回到下一条记录之前短暂返回到第一条记录。我不希望它这样做 - 有没有什么办法可以在发生时保持当前记录显示在表单中.requery,而不是在.FindFirst寻找记录的同时显示第一条记录CurrentID?
重新查询记录集,而不是表单本身:
Me.Requery '<-- resets the current record to the first one in the recordset
Me.Recordset.Requery '<-- doesn't affect the current record
Run Code Online (Sandbox Code Playgroud)