Для возврата к предыдущей записи рекомендуется пользоваться закладками. Закладки представляют собой исключительно быстрый способ передвижения по записям в интерфейсе. Следует помнить, что существует два различных вида закладок: один — для форм, а другой — для наборов записей. Закладка формы представляет собой массив переменных, динамически присваиваемых каждой записи в базовой копии набора записей. Закладка DAO — это байтовый массив, идентифицирующий каждую запись в наборе записей. Закладки являются удобными средствами навигации, они разрушаются и воссоздаются вместе с наборами записей и копиями. Не следует на них полагаться, за исключением полностью контролируемых или простых ситуаций. Закладки не представляют собой записи и не имеют никакого отношения к начальному значению. Они представляют только временное положение записи в наборе строк. Любая манипуляция с данными должна проводиться с учетом методик разработки реляционной базы данных, а не с учетом текущего положения в наборе записей или копии. Поскольку разработчик должен всегда пользоваться методом повторного запроса после обновлений и удалений, он каждый раз разрушает и воссоздаст закладки. Если интерфейс использует закладки в таких обстоятельствах, необходимо тщательно отслеживать удаления и обновления.
Приведенный ниже код может использовать закладку формы для возврата к предыдущей записи после обновления:
Private Sub Findit_AfterUpdate()
Dim redone As Recordset
Dim recordID As Variant
Dim IDValue As Long
Set rsclone = Me.RecordsetClone
IDValue = Me![Findit]
recordID = "ID = " & IDValue
rsclone.FindFirst recorded
cm = rsclone.Bookmark
Me.Bookmark = bm
End Sub
Использование закладки для возврата к предыдущей записи позволяет ускорить выполнение на 1300% по сравнению с использованием FindFirst
для решения той же задачи.