Можно ли поместить выражение в отдельный модуль для обновления формы? - PullRequest
0 голосов
/ 14 февраля 2019

Выражения:

Forms![Frm_MainForm]![Frm_SubForm_1].Requery  
Forms![Frm_MainForm]![Frm_SubForm_2].Requery  

Я использую несколько форм базы данных.
Можно ли поместить эти выражения в отдельный модуль и вызвать процедуру обновления форм в разных частях базы данных?

Например, в модуле "md_Requery":

Public UpdateForm()
Forms![Frm_MainForm]![Frm_SubForm_1].Requery
Forms![Frm_MainForm]![Frm_SubForm_2].Requery
End sub

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы можете использовать эту публичную процедуру в модуле:

Public Sub RequeryForm(frmName As String)
    Dim frm As Form
    If IsLoaded(frmName) then
        Set frm = Forms(frmName)
        frm.Requery
    End If
End Sub

Public Function IsLoaded(frmName as String)
On Error GoTo Error_Handler
    'to call this function, you must put the form in quotes: IsLoaded("frmEntries_EntrySelection")    
    IsLoaded = (SysCmd(SYSCMD_GETOBJECTSTATE, A_FORM, FormName) <> 0)

Exit_Procedure:
    Exit Function
Error_Handler:
    Select Case Err.Number
        Case Else
            MsgBox Err.Number & ", " & Err.Description
            Resume Exit_Procedure
            Resume
    End Select
End Function

Называйте это так:

RequeryForm "Frm_SubForm_1"
0 голосов
/ 15 февраля 2019

Public UpdateForm() допустим в секции (Delarations) модуля: он объявляет открытый массив Variant с именем UpdateForm.

, что делает тело процедуры недопустимым, поскольку [thing].Requery является исполняемым оператором, недопустимым вне области действия процедуры.

Измените объявление на Public Sub UpdateForm(), и вы увидите, что выпадающий в верхнем правом углу изменится с (Declarations) на UpdateForm,указывая, что вы находитесь в области действия процедуры.

...