Método Recordset2.Clone (DAO)
Se aplica a: Access 2013, Office 2013
Crea un objeto Recordset duplicado que hace referencia al objeto Recordset2 original.
Sintaxis
expression .Clone
Expresión Variable que representa un objeto Recordset2 .
Valor devuelto
Recordset
Comentarios
Utilice el método Clone para crear varios objetos Recordset duplicados. Cada conjunto de registros puede tener su propio registro actual. Si se utiliza Clone por sí mismo, no se modifican los datos en los objetos o en las estructuras subyacentes. Cuando utiliza el método Clone, puede compartir marcadores entre dos o más objetos Recordset2 porque sus marcadores son intercambiables.
Puede utilizar el método Clone cuando desea realizar una operación en un conjunto de registros que requiere varios registros actuales. Es más rápido y eficaz que abrir un segundo conjunto de registros. Cuando se crea un conjunto de registros con el método Clone, al principio no tiene un registro actual. Para que haya un registro activo antes de utilizar el clon del conjunto de registros, debe definir la propiedad Bookmark o utilizar uno de los métodos Move, uno de los métodos Find o el método Seek.
El uso del método Close en el objeto original o duplicado no afecta al otro objeto. Por ejemplo, utilizar Close en el conjunto de registros original no cierra el clon.
Nota:
- Al cerrar una copia del conjunto de registros en una transacción pendiente, se genera una operación Rollback implícita.
- Al clonar un objeto Recordset de tipo tabla en un área de trabajo de Microsoft Access, no se clona el valor de la propiedad Index en la nueva copia del conjunto de registros. Debe copiar el valor de la propiedad Index manualmente.
Ejemplo
En este ejemplo se utiliza el método Clone para crear copias de un conjunto de registros y, a continuación, se deja que el usuario coloque el puntero de registros de cada copia de manera independiente.
Sub CloneX()
Dim dbsNorthwind As Database
Dim arstProducts(1 To 3) As Recordset2
Dim intLoop As Integer
Dim strMessage As String
Dim strFind As String
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' If the following SQL statement will be used often,
' creating a permanent QueryDef will result in better
' performance.
Set arstProducts(1) = dbsNorthwind.OpenRecordset( _
"SELECT ProductName FROM Products " & _
"ORDER BY ProductName", dbOpenSnapshot)
' Create two clones of the original Recordset.
Set arstProducts(2) = arstProducts(1).Clone
Set arstProducts(3) = arstProducts(1).Clone
Do While True
' Loop through the array so that on each pass, the
' user is searching a different copy of the same
' Recordset.
For intLoop = 1 To 3
' Ask for search string while showing where the
' current record pointer is for each Recordset.
strMessage = _
"Recordsets from Products table:" & vbCr & _
" 1 - Original - Record pointer at " & _
arstProducts(1)!ProductName & vbCr & _
" 2 - Clone - Record pointer at " & _
arstProducts(2)!ProductName & vbCr & _
" 3 - Clone - Record pointer at " & _
arstProducts(3)!ProductName & vbCr & _
"Enter search string for #" & intLoop & ":"
strFind = Trim(InputBox(strMessage))
If strFind = "" Then Exit Do
' Find the search string; if there's no match, jump
' to the last record.
With arstProducts(intLoop)
.FindFirst "ProductName >= '" & strFind & "'"
If .NoMatch Then .MoveLast
End With
Next intLoop
Loop
arstProducts(1).Close
arstProducts(2).Close
arstProducts(3).Close
dbsNorthwind.Close
End Sub