Access 2007 VBA:如何获取/更改当前记录在屏幕上的位置

我有一个显示40行的Access 2007表单.当我打开它时,我希望当前记录的行显示在显示的40行中的行位置#5.换句话说,当前行上方应有4行,下方有35行.

MoveUpDown是我第一次执行此操作,但目前仅在当前记录的行(由FindFirst移动)最初显示在行位置#1到#5时才有效.如何找到当前行的显示位置,相对于显示的行,以及如何更改它?谢谢.

Private Sub OpenMyFormTo(sqlWhere As String)
    Dim rs As DAO.Recordset, frm As Form
    DoCmd.Openform "myForm", acNormal
    Set frm = Forms("myForm").Form
    Set rs = frm.RecordsetClone
    If Not (rs.BOF And rs.EOF) Then
        rs.MoveFirst
        rs.FindFirst sqlWhere
        frm.Bookmark = rs.Bookmark
        MoveUpDown frm.Recordset, 5
    End If
End Sub

Private Sub MoveUpDown(rs As DAO.Recordset, RowsToMove As Integer)
    Dim RowsActuallyMoved As Integer, i As Integer
    RowsActuallyMoved = 0
    For i = 1 To RowsToMove
        If Not rs.BOF Then
            rs.MovePrevious
            RowsActuallyMoved = RowsActuallyMoved + 1
        End If
    Next i
    For i = 1 To RowsActuallyMoved
        If Not rs.EOF Then rs.MoveNext
    Next i
End Sub

最佳答案 我不完全确定这是否是你所需要的:

a)直接进入第5条记录,使用:

DoCmd.GoToRecord acDataForm,Me.Name,acGoTo,5

(Me.Name仅在代码位于表单自己的代码模块中时)

b)您可以使用查询当前位置

Me.Recordset.AbsolutePosition

奇怪的是,.AbsolutePosition开始计数为0,goto-command为1.

点赞