Archive for the ‘mc_form’ Category
Как обновить данные на форме
Чтобы обновить данные на форме можно воспользоваться несколькими способами.
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 рассылку или добавить в ЖЖ друзья.