我可以将表达式放在单独的模块中以更新表格吗?

时间:2019-02-14 20:54:28

标签: vba ms-access access-vba

表达式:

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 :(得分:2)

Public UpdateForm()在模块的(Delarations)部分中有效:它声明了名为Variant的公共UpdateForm数组。

但是,由于[thing].Requery是可执行语句,因此该过程的主体是非法的。在过程范围之外,这是非法的。

将声明更改为Public Sub UpdateForm(),您会注意到右上角的下拉列表将从(Declarations)变为UpdateForm,表明您在过程范围内。 / p>

答案 1 :(得分:1)

您可以在模块中使用此公共过程:

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"