Описание
Устанавливает или возвращает закладку, которая однозначно определяет текущую запись в Recordset.
Значение
Задаваемое или возвращаемое значение определяются строковым выражением или выражением типа Variant, значением которого является допустимая закладка. Типом данных является массив Variant элементов типа Byte.
Замечания
Для объекта Recordset, созданного исключительно на основе таблиц ядра базы данных Microsoft Jet, свойство Bookmarkable имеет значение True, и допускается использование свойства Bookmark для объектов Recordset. Например, не допускается использование закладок в любом объекте Recordset, созданном на основе присоединенной таблицы Paradox, в которой не определен ключ.
При создании или открытии объекта Recordset каждая из его записей получает уникальную закладку. Для того чтобы запомнить положение текущей записи, следует присвоить текущее значение свойства Bookmark переменной. Для быстрого возвращения к сохраненному в переменной указателю текущей записи в любое время после перехода на другую запись следует указать в значении свойства Bookmark объекта Recordset значение этой переменной.
Число возможных закладок в наборе записей не ограничивается. Для создания закладки, определяющей запись, отличную от текущей записи, следует перейти на нужную запись, а затем присвоить значение свойства Bookmark строковой переменной, которая будет указывать на нужную запись.
Перед использованием свойства Bookmark следует проверить значение свойства Bookmarkable объекта Recordset, которое определяет, поддерживает ли данный набор записей использование закладок. Если свойство Bookmarkable имеет значение False, объект Recordset не поддерживает закладки, и обращение к свойству Bookmark приведет к возникновению перехватываемой ошибки.
Если с помощью метода Clone создана копия объекта Recordset, то значения закладок для исходного объекта Recordset и его копии являются идентичными и допускают взаимную замену. Однако нельзя использовать подобным образом закладки из других объектов Recordset, даже если они были созданы на основе одного объекта или с помощью одинаковой инструкции SQL.
При попытке задать для свойства Bookmark значение, представляющее удаленную запись, возникает перехватываемая ошибка.
Значение свойства Bookmark не идентично номеру записи.
Пример
Следующая программа использует свойства Bookmark и Bookmarkable для запоминания позиции записи в объекте Recordset и возвращения к этой записи.
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("Борей.mdb") Set rstCategories = dbsNorthwind.OpenRecordset("Типы", dbOpenSnapshot) With rstCategories If .Bookmarkable = False Then Debug.Print "Объект Recordset не поддерживает закладки!" Else ' Заполняет объект Recordset. .MoveLast .MoveFirst Do While True ' Отображает сведения о текущей записи ' и принимает данные от пользователя. strMessage = "Категория: " & !Категория & _ " (запись " & (.AbsolutePosition + 1) & _ " из " & .RecordCount & ")" & vbCr & _ "Введите команду:" & vbCr & _ "[1 - следующая / 2 - предыдущая /" & vbCr & _ "3 - установить закладку / 4 - перейти на закладку]" intCommand = Val(InputBox(strMessage)) Select Case intCommand ' Переход вперед или назад, перехват ' меток BOF или EOF. Case 1 .MoveNext If .EOF Then .MoveLast Case 2 .MovePrevious If .BOF Then .MoveFirst ' Сохраняет закладку текущей записи. Case 3 varBookmark = .Bookmark ' Переходит на запись, отмеченную ' сохраненной закладкой. Case 4 If IsEmpty(varBookmark) Then MsgBox "Нет установленной закладки!" Else .Bookmark = varBookmark End If Case Else Exit Do End Select Loop End If .Close End With dbsNorthwind.Close End Sub