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.

Você também pode usar uma matriz variante de indicadores com o método RecordsetFilter para filtrar um conjunto selecionado de registros. 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.