Uso de marcadores
Aplica-se ao: Access 2013, Office 2013
Frequentemente é útil retornar diretamente a um registro específico depois de ter percorrido o Recordset sem precisar rolar por cada registro e comparar valores. Por exemplo, se você tentar pesquisar um registro usando o método Find mas a pesquisa não retornar nenhum registro, você será colocado automaticamente em alguma extremidade do Recordset. Se o provedor oferecer suporte, poderão ser usados indicadores para marcar seu lugar antes de usar o método Find, de forma que você pode retornar ao local. Um indicador é um valor do tipo Variant que identifica de maneira exclusiva um registro em um objeto Recordset.
Também pode utilizar uma matriz de variantes de marcadores com o método Filtro de Conjunto de Registos para filtrar um conjunto selecionado de registos. Para obter detalhes sobre essa técnica, consulte Filtrando os resultados no tópico Trabalhando com recordsets, posteriormente neste capítulo.
Você pode usar a propriedade Bookmark para obter um indicador para um registro ou definir o registro atual em um objeto Recordset para o registro identificado por um indicador válido. O código a seguir usa a propriedade Bookmark para definir um indicador e, em seguida, retornar o registro indicado depois de mover-se para outros registros. Para determinar se o seu Recordset oferece suporte a indicadores, use o 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
O método Supports será abordado em mais detalhes posteriormente.
Exceto no caso de Recordsets clonados, os indicadores são exclusivos do Recordset no qual foram criados, mesmo que o mesmo comando seja usado. Isso significa que você não pode usar um Bookmark obtido de um Recordset para mover-se para o mesmo registro em outro Recordset aberto com o mesmo comando.