【问题标题】:Opening subform within navigations (ELI5)在导航中打开子表单 (ELI5)
【发布时间】:2015-01-29 17:44:20
【问题描述】:

我正在构建一个访问数据库(我偶尔会发布我的问题)并且我有一个关于 ms 访问的一般性问题:

如何在导航表单中打开子表单?

我有一个主/子树:

Main Navigation Form -> Main Student Records Navigation Form -> View All Students Datasheet -> View Edit Student

我的目标是单击数据表中记录的 ID,并让它打开显示完整详细信息的“查看/编辑学生”(数据表只有几个元素)。

但老实说,我不明白如何调用子表单以这样的方式打开。我读过它,我认为它会是这样的

DoCmd.OpenForm Forms!NavigationForm.StudentNav_Form.ViewEditStud_Form

但这不起作用。但是我觉得这个问题对于访问的工作方式来说是系统性的。我不确定我是否理解在 VBA 中引用和调用对象的工作原理。阅读msdn文章只会让我更加困惑>.

谢谢大家!


编辑:我发现了这个:navigating to a different tab in navigation subform

BrowseTo 命令似乎是我想要的,但我不确定我是否理解如何编写语法以移动到正确的页面......我将进行实验,但如果有人有任何想法我'很想知道!

【问题讨论】:

  • 所以 ViewAllStudents 是 Student 中的子表单,并且在父表单加载时可见?听起来您只需要更改 ViewAllStudent 的记录源。 - - 您可以将_Click 事件添加到他们单击的表单(如果他们单击学生表单中的ID 字段,则将名为ID_Click 的子添加到学生代码)。到代码运行时,ID.Value 将保存他们单击的值。然后您可以更改 ViewAllStudents 的记录源以显示该 ID 的记录。

标签: forms ms-access vba


【解决方案1】:

老实说,当我开始使用 access 编程时,表单导航是我最难适应的事情之一。我认为您正在寻找的是这样的:

DoCmd.OpenForm "FormName", acNormal, "", "[Record_ID] = " & Me.Record_ID, , acNormal

如果您的 Record_ID 出于某种原因是一个字符串,它将是这样的单引号:

DoCmd.OpenForm "FormName", acNormal, "", "[Record_ID] = '" & Me.Record_ID & "'", , acNormal

显然,您需要将 FormName 替换为您要打开的表单的名称,并将 Record_ID 替换为该列的实际名称。从外观上看,您的 FormName 很可能是 ViewEditStud_Form。

【讨论】:

  • 所以我明白了,但只要输入表单名称就会打开一个新窗口。我希望当用户单击记录时,他们从“查看所有学生”数据表(学生导航的子项,它是整体导航的子项)中单击该记录,然后打开在“查看/编辑学生”中记录(再次,学生导航的孩子,整体导航的孩子)。我怎样才能以这种方式引导导航?
  • 我个人建议将您的一个字段上的“显示为超链接”属性设置为“仅屏幕”,然后转到该字段的点击事件并输入我发布的代码。基本上,当用户点击说学生姓名时,它将运行该代码并打开第二个表单,该表单将设置为用户点击的学生。
  • 嗯,这就是我原来的,但它没有在导航窗格中打开。它作为一个新窗口打开,你明白我在说什么吗?让记录在点击时打开不是问题,它是指导表单然后在已经打开的导航表单中打开。请记住,数据表是学生导航的子项,我希望视图/编辑也可以作为学生导航的子项打开。
【解决方案2】:

我已经解决了。我不想要DoCmd.Open 我想要DoCmd.Browseto,如上面的帖子中所述。浏览的语法如下:

DoCmd.BrowseTo acBrowseToForm, "ViewEditStud_Form", "NavigationForm.NavigationSubform>StudentNav_Form.NavigationSubform"

我花了一段时间才理解这一点,所以我将把它分解。

acBrowseToForm 告诉它我正在浏览一个表单(显然!) "ViewEditStud_Form" 是我正在浏览的表单。 "NavigationForm.NavigationSubform>StudentNav_Form.NavigationSubform" 是在哪里打开它的说明。 NavigationForm 是我的主要导航表单的名称。 .NavigationSubform> 标识有一个子表单可以在其中打开它,并且该子表单是StudentNav_Form,其中包含一个导航子表单(并且它的末尾表明该子表单是要在其中打开表单的位置!)

希望这对其他人有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多