如何在MS Access中引用子表单

时间:2012-11-06 05:16:14

标签: vba ms-access ms-access-2010 subform

在我的MS Access应用程序中,我使用的表单只包含两个控件 - 文本框和命令按钮。此表单的名称为HEADER FORM

HEADER FORM用作各种其他表单的标题部分中的子表单。

我想要做的是,无论何时加载特定表单,我都希望在HEADER FORM的文本框中填写详细信息(这将是已登录人员的姓名。同样可以从下图)。

我试图在所有表单的表单加载事件中调用名为updateHeader的全局子例程。

Public Sub updateHeader()
    Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
End Sub

以下是在设计视图中显示HEADER FORM的图片,同样用作登录表单中的子表单。

enter image description here

我尝试了其他各种选项,但我无法找到正确的方法来引用表单。我从根本上做错了吗?

我看到的错误是使用Me关键字无效。 此外,我的updateHeader子例程是一个全局子程序,它从所有表单的Form_Load事件中调用。

2 个答案:

答案 0 :(得分:3)

如果您的updateHeader()程序包含在标准模块中,则可以解释有关Me关键字的投诉......它在标准模块中无效。

在表单模块中,Me表示“此表单”。

您可以更改过程声明以接受对表单的引用。

Public Sub updateHeader(ByRef TheForm As Form)
    ' Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
    TheForm![HEADER FORM].Form.txtHeaderName = strPerson
End Sub

.Value是默认属性,因此这里不需要,所以我把它留了出来。但如果您愿意,可以将其添加回来。

然后,您可以从父窗体调用该过程,并将该过程传递给它自己(父窗体)。

updateHeader Me

答案 1 :(得分:0)

我得到了这些"语法版本"来自Wiley.Microsoft.Office.Access.2007.Bible: 引用子窗体控件时:

<强>表单![窗体名称]![SubformName] .FORM![控件名称]

在子表单中使用/引用子表单时,请使用以下语法: 的窗体![窗体名称]![SubformName] .FORM![SubSubformName] .FORM。[控件名称]