Как выделить заданную строчку в форме с помощью VBA?

msleg
Дата: 18.02.2016 12:31:38
Добрый день! Есть разделенная форма с кнопкой, которая обновляет (Requery) источник формы. После обновления исчезает выделение записи. Как мне сохранить позицию записи, которая была выделена до обновления. И как выделить заданную строчку после обновления?
Я как понял
Me.CurrentRecord
- показывает номер строки, которая выделена
Rivkin Dmitry
Дата: 18.02.2016 13:19:54
Один из способов такой: сохраняешь в переменную ID записи на которой стоит маркер до обновления. После обновления надо найти этот ID в клоне рекордсета. По идее, этого долдно хваоить. Но, если недостаточно, тогда присвоить букмарк клона букмарку формы. Чтобы избежать мигания формы при этом, на время этой аперации отключить эхо и painting формы (не забыть их включить при выходе из процедуры! через обработчик ошибок). Да, еще, после обновления есть шанс, что сохраненного ID в рекордсете уже нет. Так что, нужно обязательно проверить результат поиска в клоне
msleg
Дата: 18.02.2016 13:42:09
Rivkin Dmitry,

А могли бы привести код примера?
msleg
Дата: 18.02.2016 14:27:00
Нашел следующий способ, через bookmark.
        Dim varBookmark As Variant
        varBookmark = Me.Bookmark

        Me.Requery
        Me.Bookmark = varBookmark


Единственное, что меня еще не устраивает, что после я хочу, чтобы запись была, вся выделенная, как на 1 рис. (до обновления),
Картинка с другого сайта.

а сейчас после обновления как на рис 2
Картинка с другого сайта.
Rivkin Dmitry
Дата: 18.02.2016 14:42:02
Нет, это неверно. Букмарки рекордсета после обновления изменятся
Как то так (код пишу без проверки, сорри)Ж

Dim id as LongInt
id = Me.id
Me.Requery
Me.Recordset.Find "id = " & id
If not Me.Recordset.NoMutch Then
Me.Bookmark = Me.Recordset.BookMark
End If
msleg
Дата: 18.02.2016 15:55:57
Rivkin Dmitry,

Когда у меня Источник не изменяется (т.е. сколько вначале было записей до обновления, столько и осталось, очередность не менялась), в моём случае я обновляю только значение в поле одной записи. То bookmark - работает
msleg
Дата: 18.02.2016 15:56:49
Вопрос остался, как выделить запись, как на рисунке?
mds_world
Дата: 18.02.2016 16:15:35
После того как правильная запись найдена, пишете
docmd.runcommand accmdselectrecord