从子表单访问父表单和其他打开表单

时间:2012-11-06 09:52:20

标签: forms ms-access access-vba ms-access-2010 subforms

继续我的应用程序开发,我遇到了另一个问题。

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

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

下图显示了子窗体及其在主要窗体之一中的用法。

enter image description here

现在,我想要的是当用户点击子表单的Logout按钮时,将发生注销操作(这很好,我能够弄明白)以及在那个时间点打开的所有表单应关闭/卸载。

我尝试使用以下代码无济于事。

Option Compare Database

Private Sub cmdHeaderLogout_Click()
    If (loggedIn = 1) Then
        loggedIn = 0
        DoCmd.Close acForm, Parent.Form
    End If
End Sub

当我尝试单击注销按钮时,控件到达上面的DoCmd.Close语句。在给出以下错误消息后执行停止:

  

运行时错误:2498。您输入的表达式是错误的数据类型   其中一个论点。

并指向Parent.Form文字。

我无法弄清楚如何引用父表单并卸载它?

1 个答案:

答案 0 :(得分:1)

您应该参考当前表单的父级名称,即:

DoCmd.Close acForm, Me.Parent.Name

DoCmd.Close的第二个参数采用字符串。

您还可以遍历表单集合。

FormsCount = Forms.Count - 1

For i = FormsCount To 0 Step -1
    If Forms(i).Name <> Me.Name Then
        DoCmd.Close acForm, Forms(i).Name
    End If
Next