5 строк кода

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

Как обновить данные на форме

Один комментарий

Чтобы обновить данные на форме можно воспользоваться несколькими способами.

1. Me.Requery. Обновляет все записи на форме. Текущей записью становится первая запись.

2. Me.Refresh. Обновляет текущую запись. Этот же способ можно использовать для сохранения изменений текущей записи. Чаще всего так и происходит.

3. Me.<имя_поля>.Requery. Обновить данные в элементе управления.

Чаще всего используются первый и второй методы. В случае с Me.Requery у меня постоянно возникает необходимость вернуться к прежней записи. Так появилась функция CM_FormRequery(). Использовать ее легко и просто, вместо Me.Requery необходимо написать CM_FormRequery(Me, «Имя ключевого поля»). Для ситуации с составными ключами есть необязательный параметр imPlPk2. В функции предполагается, что ключевые поля числового типа.

Public Sub CM_FormRequery(ByRef frm As Form _
                               , ByVal imPlPk As String _
                               , Optional ByVal imPlPk2 As String = "")
'-- Скоков С.А.
'-- обновить данные на форме и перейти к выделенной до обновления записи
On Error GoTo Err_
    Dim rst         As DAO.Recordset
    Dim lK_PK       As Long
    Dim lK_PK2      As Long
    Dim stFilter    As String
    
    '-- сохранить значение PK
    lK_PK = Nz(frm(imPlPk), 0)
    If imPlPk2 <> "" Then lK_PK2 = Nz(frm(imPlPk2), 0)

    '-- обновить данные
    frm.Requery

    '-- найти запись
    If lK_PK = 0 Then
        Exit Sub
    End If
    
    stFilter = imPlPk & " = " & lK_PK
    If imPlPk2 <> "" Then stFilter = stFilter & " AND " & imPlPk2 & " = " & lK_PK2
    
    Set rst = frm.RecordsetClone
    rst.FindFirst stFilter
    If Not rst.NoMatch Then
        frm.Bookmark = rst.Bookmark
    End If
    rst.Close
Exit_:
    Exit Sub
Err_:
    Call mc_Log.CM_LogErr("CM_FormRequery()")
    Resume Exit_
End Sub

До встречи!

(с) Скоков Сергей

Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.

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

Октябрь 23rd, 2010 at 2:37 пп

Один комментарий to 'Как обновить данные на форме'

Subscribe to comments with RSS or TrackBack to 'Как обновить данные на форме'.

  1. а как сделать так, чтобы обновились данные в запросе, которые строятся на основании sql запроса и обновляются только посредством нажатия кнопки «Обновить Все» на вкладке «Главная». сам запрос подтягивается в заголовок формы и надо как то запустить «Обновить Все» через событие на заголовке формы. Спасибо!

    Евгений

    17 Апр 14 at 12:01

Leave a Reply