重新查询时如何避免进入第一条记录?

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

mwo*_*e02 5

重新查询记录集,而不是表单本身:

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)