如何从Access VBA中的另一个窗体调用一个窗体的Form_Load

时间:2015-06-04 12:08:55

标签: forms vba ms-access events

我有一个MS Access表单,显示网格中的记录列表。每行都有详细信息按钮。

点击它后,会打开一个新表单,其中包含该特定选定行的详细信息。

点击详细信息表单的关闭按钮后,将值保存到数据库。

现在,点击关闭,我希望执行主表单的表单加载。这是因为我需要在以详细形式进行更新后刷新某些值

我尝试过这样的事情:

Call Forms!frm_Package!Form_Load

请建议如何完成此操作。我尝试了各种各样的方法,但无法使其发挥作用。

如果需要任何进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

您无法“re-call”加载的原因是因为它是Private Sub,并且只有当您在表单内时才能访问该方法。

攻击“ 外部过程调用 ”的一种方法是将Form Load中的代码移动到Public Sub(使用相同的Form),然后再调用从表单外部创建Sub。像,

Private Sub Form_Load()
    MsgBox "Hello World"
End Sub

Private Sub Form_Load()
    newPubMethod
End Sub

Public Sub newPubMethod()
    MsgBox "Hello World"
End Sub

现在,您可以使用正确的量词从Form外部调用此Public Sub newPubMethod。

Private Sub exitButtonName_Click()
    Forms("CallingFormName").newPubMethod
End Sub

答案 1 :(得分:0)

我使用此代码来执行此类操作。当我打开一个弹出窗体时隐藏主窗体...我做我的工作,然后我回到主窗体。

Private Sub Form_Open(Cancel As Integer)
If gIsLoaded("mainForm") Then Form_mainForm.Visible = False
End Sub

Private Sub Form_Close()
' -- here you will put the code you need!!!
If gIsLoaded("mainForm") Then Form_mainForm.Visible = True
End Sub

Function gIsLoaded(strName As String, Optional _
                                      lngtype As AcObjectType = acForm) As Boolean
    gIsLoaded = (SysCmd(acSysCmdGetObjectState, _
                        lngtype, strName) <> 0)

End Function