2017-08-17 121 views
0

我正在研究分爲多個部分的Access數據庫。每個嵌套標籤都有一個帶有子表單的主表單。如何從窗體導航到不同形式的子窗體?

演練

我們有一個出發區被分成不同的主題。這些主題表單具有代表SubThemes的按鈕。

The starting Form in Theme 2

當我擊按鈕我要離開MainForm的1至2 MainForm的副主題A(簡單,因爲它是默認值)。

當我擊按鈕BI要離開MainForm的1至2 MainForm的副主題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

您是使用選項卡控件還是導航控件進行導航? –

+1

看看是否有幫助:https://stackoverflow.com/questions/44529082/change-navigation-tab-on-navigation-control-of-access/44529794#44529794 –

+0

我相信我使用的實現是NavigationControl。 Kostas的例子是在選項卡控制上,並且不起作用。 – whoami

回答

0

所以我設法解決這個問題:

首先我們定位到THEME2的主要表格,並與OpenArgs的幫助,告訴它我們需要哪個話題:

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

在FormLoad() Mainform2我們檢查OpenArgs和導航窗體-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 

的Mainproblem在這一切的是,如果你使用DoCmd.BrowseTo路徑對照子窗體OL你要知道,沒有記載的一些規則:

的「>」字符似乎不尋常的,這是因爲它已經爲BrowseTo的Path參數具體介紹了。它的含義是這樣的:「>」字符右邊的表單被加載到其左側指定的子表單控件中。

  • 該路徑必須指定一系列Form。SubFormControl對。指定的每個子窗體控件都必須是其路徑之前的窗體中的控件。
  • 對必須用「>」字符分隔。 ,最重要的是:(或瀏覽器窗口,如果應用程序在網絡上運行)
  • 該路徑中的第一種形式必須是目前在Access窗口直接加載形式這意味着只有Path參數允許您更改當前可見的子窗體控件的內容。

因此,我們必須在導航子控件之前首先打開新的主窗體。

似乎是處理此問題的最佳方法。 感謝您的建議!

相關問題