如何返回当前表单的祖父母姓名(即me.parent.parent.name)

时间:2013-11-19 17:57:59

标签: ms-access access-vba

我想作为参数传递三个参数(userlanguage,父窗体的名称和祖父窗体名称的名称) 我能做两个前者而不是后者。

我尝试使用Me.Parent.name返回父级表单的名称,但如果它没有附加到控件上则不起作用 -

这是一个示例:

Private Sub btnNoInterruptRational_Click()

    Dim grandParentName As String
    grandParentName = Me.Parent.name


    If (Me.OpenArgs = "English") Then

         DoCmd.OpenForm "frmP2CQ", acNormal, , , acEdit, _
         , "English|" & grandParentName
    End If

    If (Me.OpenArgs = "French") Then

         DoCmd.OpenForm "frmP2CQ", acNormal, , , acEdit, _
         , "French|" & grandParentName
    End If

End Sub

2 个答案:

答案 0 :(得分:3)

我有一个名为 frmGrandparent 的表单。它包含一个名为 frmParent 的子表单。 frmParent 包含一个名为 fsubColortable 的子表单。

我在 fsubColortable 的Form Open事件中设置了一个断点。然后在立即窗口中,检查Parent.NameParent.Parent.Name属性...

? Me.Name
fsubColortable
? Me.Parent.Name
frmParent
? Me.Parent.Parent.Name
frmGrandparent

因此Me.Parent.Parent.Name 可以为您提供顶级(祖父母)表单的名称。我不明白为什么你的尝试失败了。我建议你测试一个简化版的程序,它只关注Parent.Parent.Name ...暂时忽略所有其他的东西。

如果在这个简单版本中仍然无法从Me.Parent.Parent.Name获得您想要的内容,请提供详细信息(例如错误消息),以便我们找出失败的原因。

如果简单版本正常运行,则问题在于您如何在原始版本中使用Me.Parent.Parent.Name。关于问题性质的更具体细节应该有所帮助。

答案 1 :(得分:-1)

您似乎需要关闭OpenArgs。例如:

     DoCmd.OpenForm "frmP2CQ", acNormal, , , acEdit, _
     , "French|" & grandParentName

应该是

     DoCmd.OpenForm "frmP2CQ", acNormal, , , acEdit, _
     , "French|" & grandParentName & ""