Utilizar marcadores
A menudo resulta útil volver directamente a un registro específico después de haber pasado por el objeto Recordset sin tener que desplazarse por cada registro y comparar valores. Por ejemplo, si intenta buscar un registro mediante el método Find, pero la búsqueda no devuelve ningún registro, se coloca automáticamente al final del objeto Recordset. Si el proveedor los admite, los marcadores se pueden usar para marcar su lugar antes de usar el método Find para que pueda volver a su ubicación. Un marcador es un valor de tipo Variant que identifica de forma única un registro en un objeto Recordset.
También puede usar una matriz variant de marcadores con el método Recordset Filter para filtrar por un conjunto seleccionado de registros. Para obtener información detallada sobre esta técnica, consulte Filtrado de los resultados en el tema Trabajar con conjuntos de registros, más adelante en esta sección.
Puede usar la propiedad Bookmark para obtener un marcador para un registro o establecer el registro actual en un objeto Recordset en el registro identificado por un marcador válido. El código siguiente usa la propiedad Bookmark para establecer un marcador y, a continuación, volver al registro marcado después de pasar a otros registros. Para determinar si el objeto Recordset admite marcadores, use el método Supports.
'BeginBookmarkEg
Dim varBookmark As Variant
Dim blnCanBkmrk As Boolean
objRs.Open strSQL, strConnStr, adOpenStatic, adLockOptimistic, adCmdText
If objRs.RecordCount > 4 Then
objRs.Move 4 ' move to the fifth record
blnCanBkmrk = objRs.Supports(adBookmark)
If blnCanBkmrk = True Then
varBookmark = objRs.Bookmark ' record the bookmark
objRs.MoveLast ' move to a different record
objRs.Bookmark = varBookmark ' return to the bookmarked (sixth) record
End If
End If
'EndBookmarkEg
El método Supports se trata con más detalle más adelante.
Excepto en el caso de los objetos Recordsets clonados, los marcadores son únicos para el objeto Recordset en el que se crearon, incluso si se usa el mismo comando. Esto significa que no se puede usar un marcador obtenido de un objeto Recordset para pasar al mismo registro en un segundo objeto Recordset abierto con el mismo comando.