【问题标题】:How to navigate from a form to a subform in a different form?如何从一个表单导航到不同表单的子表单?
【发布时间】:2018-01-26 00:00:21
【问题描述】:

我正在开发一个分成多个部分的 Access-Database。每个都有一个在嵌套选项卡中带有子窗体的主窗体。

演练

我们有一个分为不同主题的起始区域。这些主题表单具有代表子主题的按钮。

当我点击按钮 A 时,我想从 Mainform 1 导航到 Mainform 2 子主题 A(很简单,因为它是默认设置)。

当我点击按钮 B 时,我想从 Mainform 1 导航到 Mainform 2 子主题 B。(我无法让它工作)

我知道的

我可以轻松地从 Mainform 1 转到 Mainform 2,默认登陆 Theme 1

Private Sub buttonB_Click()
   DoCmd.openForm "Mainform2", _
End Sub

我不知道如何导航到 Mainform2->Sub Theme B。我可以使用 OpenArgs 打开正确的子表单,但无法使用 Tabs 来完成。我尝试在 mainform2 的 onLoad() 中使用 DoCmd.browseTo 但这会破坏该过程。

如果我没记错的话,应该有一种方法可以在 buttonB_click() 中使用 DoCmd.browseTo,但我无法找到正确的路径。

DoCmd.OpenForm Method (Access)

DoCmd.BrowseTo Method (Access)

我试图尽可能笼统地描述问题,以便答案对其他人也有帮助。我希望你能帮助我!

【问题讨论】:

标签: forms ms-access ms-access-2010 subform


【解决方案1】:

所以我设法解决了它:

首先我们导航到 Theme2 的 Main-Form 并在 OpenArgs 的帮助下告诉它我们想要哪个主题:

Private Sub buttonThemeB_Click()
   DoCmd.openForm "Mainform2", _
   OpenArgs:="Theme B"
End Sub

在 Mainform2 的 FormLoad() 中,我们检查 OpenArgs 并导航 Subform-Controle:

Private Sub Form_Load()

   Dim strSubFormToken As String

   ' If OpenArgs property contains a subform name, open corresponding subform  
  If Me.OpenArgs <> 0 Then strSubFormToken = Me.OpenArgs

  Select Case strSubFormToken
     Case "Theme A"
        strSubForm = "form_themeA"
     Case "Theme B"
        strSubForm = "form_themeB"
  End Select

  strSubForm =     
  If Len(strSubForm) > 0 Then
     DoCmd.BrowseTo acBrowseToForm, strSubForm, "frmTheme2.Navigationsunterformular" 'Your Navigationtarget
  End If

End Sub

所有这一切的主要问题是,如果您使用 DoCmd.BrowseTo Path to Subform Control,您必须了解一些未记录的规则:

“>”字符看起来很不寻常,因为它是专门为BrowseTo的Path参数引入的。其含义是:“>”字符右侧的表单被加载到其左侧指定的子表单控件中。

  • 路径必须指定一系列 Form.SubFormControl 对。指定的每个子窗体控件必须是路径中位于其前面的窗体中的控件。
  • 这些对必须用“>”字符分隔。 最重要的是:
  • 路径中的第一个表单必须是当前直接加载到 Access 窗口中的表单(如果应用程序在 Web 上运行,则为浏览器窗口。)这意味着 Path 参数只允许您更改当前可见的子窗体控件的内容。

所以我们必须在导航子导航控件之前先打开新的主窗体。

似乎是处理此问题的最佳方法。 感谢您的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多