如何以不同的形式从表单导航到子表单?

时间:2017-08-17 14:04:39

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

我正在开发一个分为多个部分的Access数据库。每个都有一个Main-Form,其中包含嵌套选项卡中的子表单。

  

操作实例

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

The starting Form in Theme 2

当我点击按钮A时,我想从Mainform 1导航到Mainform 2 Subtheme A(这是默认设置)。

当我按下按钮B时,我想从Mainform 1导航到Mainform 2 Subtheme B.(我无法使其工作)

Main Form 2 - SubTheme2 opened per default on Subform A

  

我所知道的

我可以轻松地从Mainform 1到Mainform 2登陆,默认情况下主题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)

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

1 个答案:

答案 0 :(得分:0)

所以我设法解决了它:

首先,我们导航到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路径进行子窗体控制,你必须知道一些没有记录的规则:

  

“&gt;”字符似乎不常见,因为它是专门为BrowseTo的Path参数引入的。它的含义是:“&gt;”字符右侧的表单被加载到左侧指定的子表单控件中。

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

因此,在导航子控件之前,我们必须首先打开新的主窗体。

似乎是处理此问题的最佳方式。 谢谢你的建议!