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

Posted

技术标签:

【中文标题】如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load【英文标题】:How to call Form_Load of one form from another form in Access VBA 【发布时间】:2015-06-04 12:08:55 【问题描述】:

我有一个 MS Access 表单,它在 grid 中显示记录列表。每行都有一个detail按钮。

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

当点击详细表单的关闭按钮时,值被保存到数据库中。

现在,点击关闭,我想执行主表单的表单加载。这是因为我需要在详细更新后刷新一些值

我尝试过这样的事情:

Call Forms!frm_Package!Form_Load

请就如何实现这一点提出建议。我尝试了各种方法,但都无法奏效。

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

【问题讨论】:

【参考方案1】:

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

破解“external procedure call”的一种方法是将 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

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

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

【讨论】:

非常适合我。谢谢..接受你的回答【参考方案2】:

我使用这段代码来做这种事情。当我打开一个弹出式表单时,我隐藏了主表单……我完成了我的工作,然后我返回到了主表单。

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  

【讨论】:

以上是关于如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load的主要内容,如果未能解决你的问题,请参考以下文章

在 Access 中从另一个表的数据创建一个表

请问在Delphi里如何从一个窗体调用另一个窗体?

如何遍历所有子窗体 MS Access VBA

C#里怎么在一个窗体里调用另一个窗体的控件

在C#中,如何在一个窗体中调用另一个窗体的数据?

如何在 Java 中从另一个构造函数调用一个构造函数?