5

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

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

我想要做的是,每当加载特定表单时,我想在文本框中填写详细信息HEADER FORM(这将是已登录的人的姓名。从下图中也可以清楚地看到)。

我正在尝试调用以updateHeader所有表单的表单加载事件命名的全局子例程。

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

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

在此处输入图像描述

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

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

4

2 回答 2

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
于 2012-11-06T07:23:29.483 回答
0

我从 Wiley.Microsoft.Office.Access.2007.Bible 获得了这些“语法版本”:引用子表单控件时:

Forms![FormName]![SubformName].Form![ControlName]

在子表单中使用/引用子表单时,请使用以下语法: Forms![FormName]![SubformName].Form![SubSubformName].Form.[ControlName]

于 2017-03-15T09:27:37.763 回答