Compartir a través de


Recordset.Move Method (DAO)

Se aplica a: Access 2013, Office 2013

Mueve la posición del registro actual de un objeto Recordset.

Sintaxis

expresión . Move(Rows, StartBookmark)

expression Variable que representa un objeto Recordset.

Parameters

Nombre

Obligatorio/opcional

Tipo de datos

Descripción

Rows

Necesario

Long

El número de filas en que se mueve la posición. Si rows es superior a 0, la posición se desplaza hacia delante (hacia el final del archivo). Si rows es inferior a 0, la posición se desplaza hacia atrás (hacia el principio del archivo).

StartBookmark

Opcional

Variant

Valor que identifica un marcador. Si especifica startbookmark, el desplazamiento se inicia en relación con este marcador. De lo contrario, el desplazamiento comienza en el registro activo.

Comentarios

Si usa Move para colocar el puntero del registro actual delante del primer registro, el puntero del registro actual se mueve al principio del archivo. Si el objeto Recordset no contiene ningún registro y su propiedad BOF es True, el uso de este método para un movimiento hacia delante produce un error.

Si usa Move para colocar el puntero del registro actual detrás del primer registro, la posición del puntero del último registro actual se mueve al final del archivo. Si el objeto Recordset no contiene ningún registro y su propiedad EOF es True, el uso de este método para un movimiento hacia atrás produce un error.

Si la propiedad BOF o EOF es True e intenta usar el método Move sin un marcador válido, se produce un error en tiempo de ejecución.

Nota:

  • Cuando use Move en un objeto Recordset de tipo de solo avance, el argumento rows debe ser un entero positivo y no se permiten marcadores. Esto significa que el movimiento solo puede ser hacia delante.
  • Para que el registro primero, último, siguiente o anterior de un objeto Recordset sea el registro actual, use el método MoveFirst, MoveLast, MoveNext o MovePrevious.
  • El uso de Move con un número de filas igual a 0 es una manera fácil de recuperar los datos subyacentes para el registro activo. Esto es útil si desea asegurarse de que el registro activo tiene los datos más recientes de las tablas base. Asimismo, cancela cualquier llamada Edit o AddNew pendiente.

Ejemplo

En este ejemplo se usa el método Move para ubicar el puntero de registros en función de los datos proporcionados por el usuario.

    Sub MoveX() 
     
       Dim dbsNorthwind As Database 
       Dim rstSuppliers As Recordset 
       Dim varBookmark As Variant 
       Dim strCommand As String 
       Dim lngMove As Long 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       Set rstSuppliers = _ 
          dbsNorthwind.OpenRecordset("SELECT CompanyName, " & _ 
          "City, Country FROM Suppliers ORDER BY CompanyName", _ 
          dbOpenDynaset) 
     
       With rstSuppliers 
          ' Populate recordset. 
          .MoveLast 
          .MoveFirst 
     
          Do While True 
             ' Display information about current record and ask  
             ' how many records to move. 
             strCommand = InputBox( _ 
                "Record " & (.AbsolutePosition + 1) & " of " & _ 
                .RecordCount & vbCr & "Company: " & _ 
                !CompanyName & vbCr & "Location: " & !City & _ 
                ", " & !Country & vbCr & vbCr & _ 
                "Enter number of records to Move " & _ 
                "(positive or negative).") 
     
             If strCommand = "" Then Exit Do 
     
             ' Store bookmark in case the Move doesn't work. 
             varBookmark = .Bookmark 
     
             ' Move method requires parameter of data type Long. 
             lngMove = CLng(strCommand) 
             .Move lngMove 
     
             ' Trap for BOF or EOF. 
             If .BOF Then 
                MsgBox "Too far backward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
             If .EOF Then 
                MsgBox "Too far forward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
          Loop 
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub