【问题标题】:How to return a current form's grand-parent's name (i.e. me.parent.parent.name)如何返回当前表单的祖父母姓名(即 me.parent.parent.name)
【发布时间】:2013-11-20 03:12:22
【问题描述】:

我想作为参数传递三个参数(用户语言、父表单的名称和祖父表单的名称) 前者我能做到,但后者不行。

我尝试使用 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

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    我有一个名为 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。有关问题性质的更具体细节应该会有所帮助。

    【讨论】:

    • 嗨,首先,感谢您的详细评论,我将继续测试一个更简单的版本,但是,在此之前,我只想与您澄清一件事,当您提到在您的评论中:“它包含一个名为 frmParent 的子表单”,您实际上是指主从关系设计吗?或者“子表单”在这里松散地用于表示另一个将从“frmParentForm”调用的表单?我问的是我想先清除可能显而易见的问题。另外,我得到的错误是“您输入的表达式对父属性的引用无效。我正在使用 MS Access 2013,顺便说一句。
    • 我不明白这个问题。您是否在谈论 Access 所谓的“子数据表”?我的子表单都是实际保存的表单对象。
    • 是的,我们在同一个页面上,我说的是多个实际的保存表单对象,正如你所说的,而不是“子数据表”。它有时也被称为子表单,所以我想和你澄清一下,我们谈论的是同一个 MS Access 对象。谢谢
    • 嗨,我又做了更多的研究,有人提到 parent.name 的属性不能仅仅通过使用 DoCmd.OpenForm "frmName" 的表单来引用 - 这就是我打开我所有的对象表单,这就是为什么我得到参考错误 - 所以我想知道打开表单的替代/其他选项是什么 - 这是引用“你使用 subform 中的 Parent引用调用表单。当两个表单仅因其中一个已使用 DoCmd.OpenForm 打开另一个而相关时,您不能使用 Parent。参考:pcreview.co.uk/forums/use-parent-t2466637.html
    • 我现在更困惑了。当一个表单调用DoCmd.OpenForm 打开第二个表单时,该第二个表单不是第一个表单的子表单。这就是你在说的吗?在这种情况下,Parent 属性不可用,因为这两个表单都不是子表单。
    【解决方案2】:

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

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

    应该是

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

    【讨论】:

    • 字符串和用空字符串连接的相同字符串之间很可能存在差异,但我很难掌握 - 你能详细说明吗?
    • 访问可能变化无常,这就是我所知道的。我只是没有时间列出所有你必须做一些奇怪的事情才能让 Access 开心的情况。 :o)
    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2015-06-14
    • 2015-12-01
    • 1970-01-01
    • 2016-04-02
    • 2021-05-25
    相关资源
    最近更新 更多