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