Недостатки DoCmd.GoToRecord и достоинства CodeContextObject
Пара камней в огород DoCmd
Как-то мне понадобилось перейти к последней записи в подчиненной форме. Перейти к последней записи можно разными способами, простейший – это вот эта команда: DoCmd.GoToRecord , , acLast. Вот с подчиненненными формами есть нюанс – нужно вызывать ее в обработчике события или методе подчиненной формы. В моем случае события не подходили, метод было реализовывать влом и очень хотелось реализовать это на главной форме.
Поэтому пришлось написать свою функцию. Благодаря тому, что функция принимает ссылку на форму, а не имя, то можно ее использовать для любой формы, подчиненной, созданной при помощи DoCmd.OpenForm или оператора New.
Public Sub CM_FormGoToLastRecord(Optional ByRef frm As Form = Nothing)
' перейти на последнюю запись
' frm можно не передавать, в этом случае она будет получена при помощи CodeContextObject
On Error GoTo Err_
If frm Is Nothing Then
Set frm = CodeContextObject
End If
If frm Is Nothing Then Exit Sub
Dim rst As DAO.Recordset
Set rst = frm.RecordsetClone
If Not rst.EOF Then rst.MoveLast
frm.Bookmark = rst.Bookmark
Exit_:
Exit Sub
Err_:
mc_Log.MC_LogErr ("CM_FormGoToLastRecord()")
Resume Exit_:
End Sub
mc_Log.MC_LogErr ("FormGoToLastRecord()") - фукнция, которая логирует ошибку в текстовом файле. О ведении лога я как-нибудь расскажу попозже.
CodeContextObject
В процедуре CM_FormGoToLastRecord() используется такая штука, как CodeContextObject, которое в справке называют свойством. Это свойство позволяет получить ссылку на объект, в рамках которого выполняется данный код. Если вызвать процедуру CM_FormGoToLastRecord() в событии подчиненной формы, то CodeContextObject выдаст ссылку на подчиненную форму. Этот же способ использует DoCmd.GoToRecord, когда не указывается имя объекта.
До встречи!
(с) Скоков Сергей
Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
http://www.ruki-zoloto.ru/ventiljacija/systemair/2519/…
Селиван
5 Май 10 at 01:53
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Transcend…
Qelusoqax
6 Май 10 at 15:12
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Алиса Лисовская Алиса Лисовская…
Северин
6 Май 10 at 15:49
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Компоненты…
Ненила
6 Май 10 at 16:26
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Сотовые телефоны Nokia…
QaquhAruta
6 Май 10 at 16:58
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Мониторы NEC MultiSync LCD1770NX (черный)…
NopeXize
6 Май 10 at 17:31
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Дополнительное оборудование…
Филиппа
6 Май 10 at 18:03
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Уход за телом Janssen Cosmeceutical…
Агапия
6 Май 10 at 18:51
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Аксессуары для бытовой техники Gaggenau KF 900-090…
ZezaHilib
6 Май 10 at 19:35
Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…
Бытовая техника Zanussi…
Горислава
6 Май 10 at 20:47