Applies To Dynamic-Type Recordset object, Dynaset-Type Recordset object, Forward-Only–Type Recordset object, Recordset object, Snapshot-Type Recordset object, Table-Type Recordset object.
Description
Move to the first, last, next, or previous record in a specified Recordset object and make that record the current record.
Syntax recordset.{MoveFirst | MoveLast [dbRunAsync] | MoveNext | MovePrevious} The recordset placeholder is an object variable that represents an open Recordset object. Remarks Use the Move methods to move from record to record without applying a condition.See Also AbsolutePosition property, BOF, EOF properties, Cancel method, FindFirst, FindLast, FindNext, FindPrevious methods, Index property, Move method, RecordCount property, Seek method, StillExecuting property.
Example This example uses the MoveFirst, MoveLast, MoveNext, and MovePrevious methods to move the record pointer of a Recordset based on the supplied command. The MoveAny procedure is required for this procedure to run.Sub MoveFirstX()
    Dim dbsNorthwind As Database
    Dim rstEmployees As Recordset
    Dim strMessage As String
    Dim intCommand As Integer
    Set dbsNorthwind = OpenDatabase("Northwind.mdb")
    Set rstEmployees = dbsNorthwind.OpenRecordset( _
        "SELECT FirstName, LastName FROM Employees " & _
        "ORDER BY LastName", dbOpenSnapshot)
    With rstEmployees
        ' Populate Recordset.
        .MoveLast
        .MoveFirst
        Do While True
            ' Show current record information and get user's
            ' method choice.
            strMessage = "Name: " & !FirstName & " " & _
                !LastName & vbCr & "Record " & _
                (.AbsolutePosition + 1) & " of " & _
                .RecordCount & vbCr & vbCr & _
                "[1 - MoveFirst, 2 - MoveLast, " & vbCr & _
                "3 - MoveNext, 4 - MovePrevious]"
            intCommand = Val(Left(InputBox(strMessage), 1))
            If intCommand < 1 Or intCommand > 4 Then Exit Do
            ' Call method based on user's input.
            MoveAny intCommand, rstEmployees
        Loop
        .Close
    End With
    dbsNorthwind.Close
End Sub
Sub MoveAny(intChoice As Integer, _
    rstTemp As Recordset)
    ' Use specified method, trapping for BOF and EOF.
    With rstTemp
        Select Case intChoice
            Case 1
                .MoveFirst
            Case 2
                .MoveLast
            Case 3
                .MoveNext
                If .EOF Then
                    MsgBox "Already at end of recordset!"
                    .MoveLast
                End If
            Case 4
                .MovePrevious
                If .BOF Then
                    MsgBox "Already at beginning of recordset!"
                    .MoveFirst
                End If
        End Select
    End With
End SubSub MoveThroughRecords()
    Dim dbs As Database, rst As Recordset, intI As Integer
    Dim strNumber As String
    
    ' Return reference to current database.
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("Products")
    ' Populate Recordset object.
    rst.MoveLast
    ' Return to first record.
    rst.MoveFirst
    ' Get number smaller than number of records.
    strNumber = InputBox("Please enter a number less than " _
        & rst.RecordCount & ".")
    ' Move specified number of records.
    For intI = 1 To strNumber
        rst.MoveNext
    Next intI
    Debug.Print rst!ProductName
    rst.Close
    Set dbs = Nothing
End Sub