5 строк кода

Как писать комерческие приложения на MS Access

Недостатки DoCmd.GoToRecord и достоинства CodeContextObject

10 комментариев

Bruce tells me ecommerce web hosting -it's easy .

Пара камней в огород 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 рассылку или добавить в ЖЖ друзья.

хельсинки санкт-петербург .

Written by Сергей Скоков

Май 27th, 2009 at 3:35 пп

10 комментариев to 'Недостатки DoCmd.GoToRecord и достоинства CodeContextObject'

Subscribe to comments with RSS or TrackBack to 'Недостатки DoCmd.GoToRecord и достоинства CodeContextObject'.

  1. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    http://www.ruki-zoloto.ru/ventiljacija/systemair/2519/

    Селиван

    5 Май 10 at 01:53

  2. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Transcend

    Qelusoqax

    6 Май 10 at 15:12

  3. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Алиса Лисовская Алиса Лисовская

    Северин

    6 Май 10 at 15:49

  4. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Компоненты

    Ненила

    6 Май 10 at 16:26

  5. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Сотовые телефоны Nokia

    QaquhAruta

    6 Май 10 at 16:58

  6. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Мониторы NEC MultiSync LCD1770NX (черный)

    NopeXize

    6 Май 10 at 17:31

  7. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Дополнительное оборудование

    Филиппа

    6 Май 10 at 18:03

  8. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Уход за телом Janssen Cosmeceutical

    Агапия

    6 Май 10 at 18:51

  9. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Аксессуары для бытовой техники Gaggenau KF 900-090

    ZezaHilib

    6 Май 10 at 19:35

  10. Недостатки DoCmd.GoToRecord и достоинства CodeContextObject | 5 строк кода…

    Бытовая техника Zanussi

    Горислава

    6 Май 10 at 20:47

Leave a Reply

автокресло romer safefix plus tt, Детское автокреслоromer safefix plus 1 .