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

问题描述 投票:1回答:2

表达式:

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

vba ms-access access-vba
2个回答
2
投票

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

这使得程序的主体非法,因为[thing].Requery是一个可执行的语句,这在程序范围之外是非法的。

将声明更改为读取Public Sub UpdateForm(),您会注意到右上角的下拉列表将从(Declarations)更改为UpdateForm,表示您位于过程范围内。


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"
© www.soinside.com 2019 - 2024. All rights reserved.