Propriedade Recordset.Bookmark (DAO)
Aplica-se ao: Access 2013, Office 2013
Define ou retorna um marcador que identifica exclusivamente o registro atual em um objeto Recordset.
Sintaxe
expressão .Bookmark
expressão Uma variável que representa um objeto Recordset.
Comentários
Para um objeto Recordset baseado totalmente em tabelas do mecanismo do banco de dados do Microsoft Access, o valor da propriedade Bookmarkable é True, e você usa a propriedade Bookmark com aquele Recordset. No entanto, outros produtos do banco de dados podem não oferecer suporte aos marcadores. Por exemplo, você não pode usar indicadores em nenhum objeto Recordset com base em uma tabela vinculada Paradox que não tenha nenhuma chave primária.
Quando você cria ou abre um objeto Recordset, cada um de seus registros já tem um indicador exclusivo. Salve o marcador do registro atual pela atribuição do valor da propriedade Bookmark a uma variável. Para retornar rapidamente ao registro a qualquer momento depois de se mover para um registro diferente, defina a propriedade Bookmark do objeto Recordset como o valor dessa variável.
Não há limite para o número de marcadores que você pode estabelecer. Para criar um marcador de um registro diferente do registro atual, mova-se para o registro desejado e atribua o valor da propriedade Bookmark a uma variável String que identifique o registro.
Para garantir que o objeto Recordset seja compatível com marcadores, verifique os valores de sua propriedade Bookmarkable antes de usar a propriedade Bookmark. Se a propriedade Bookmarkable for False, o objeto Recordset não oferecerá suporte aos marcadores e usará os resultados da propriedade Bookmark em um erro interceptável.
Se você usar o método Clone para criar uma cópia de um objeto Recordset, as definições da propriedade Bookmark dos objetos Recordset original e duplicado serão idênticas e poderão ser usadas de forma permutável. No entanto, você não pode usar marcadores de objetos Recordset diferentes de forma permutável, mesmo que esses marcadores tenham sido criados usando o mesmo objeto ou a mesma instrução SQL.
Se você definir a propriedade Bookmark como um valor que representa um registro excluído, ocorrerá um erro interceptável.
O valor da propriedade BookmarkBookmark não é o mesmo que um número de registro.
Exemplo
Este exemplo usa as propriedades Bookmark e Bookmarkable para permitir que o usuário sinalize um registro em um Recordset para retornar a ele mais tarde.
Sub BookmarkX()
Dim dbsNorthwind As Database
Dim rstCategories As Recordset
Dim strMessage As String
Dim intCommand As Integer
Dim varBookmark As Variant
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstCategories = _
dbsNorthwind.OpenRecordset("Categories", _
dbOpenSnapshot)
With rstCategories
If .Bookmarkable = False Then
Debug.Print "Recordset is not Bookmarkable!"
Else
' Populate Recordset.
.MoveLast
.MoveFirst
Do While True
' Show information about current record and get
' user input.
strMessage = "Category: " & !CategoryName & _
" (record " & (.AbsolutePosition + 1) & _
" of " & .RecordCount & ")" & vbCr & _
"Enter command:" & vbCr & _
"[1 - next / 2 - previous /" & vbCr & _
"3 - set bookmark / 4 - go to bookmark]"
intCommand = Val(InputBox(strMessage))
Select Case intCommand
' Move forward or backward, trapping for BOF
' or EOF.
Case 1
.MoveNext
If .EOF Then .MoveLast
Case 2
.MovePrevious
If .BOF Then .MoveFirst
' Store the bookmark of the current record.
Case 3
varBookmark = .Bookmark
' Go to the record indicated by the stored
' bookmark.
Case 4
If IsEmpty(varBookmark) Then
MsgBox "No Bookmark set!"
Else
.Bookmark = varBookmark
End If
Case Else
Exit Do
End Select
Loop
End If
.Close
End With
dbsNorthwind.Close
End Sub
Este exemplo usa a propriedade LastModified para mover o ponteiro do registro atual para o registro modificado e para o registro recentemente criado.
Sub LastModifiedX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim strFirst As String
Dim strLast As String
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees", _
dbOpenDynaset)
With rstEmployees
' Store current data.
strFirst = !FirstName
strLast = !LastName
' Change data in current record.
.Edit
!FirstName = "Julie"
!LastName = "Warren"
.Update
' Move current record pointer to the most recently
' changed or added record.
.Bookmark = .LastModified
Debug.Print _
"Data in LastModified record after Edit: " & _
!FirstName & " " & !LastName
' Restore original data because this is a demonstration.
.Edit
!FirstName = strFirst
!LastName = strLast
.Update
' Add new record.
.AddNew
!FirstName = "Roger"
!LastName = "Harui"
.Update
' Move current record pointer to the most recently
' changed or added record.
.Bookmark = .LastModified
Debug.Print _
"Data in LastModified record after AddNew: " & _
!FirstName & " " & !LastName
' Delete new record because this is a demonstration.
.Delete
.Close
End With
dbsNorthwind.Close
End Sub