[英]Open Subform in Access in New Window
我在訪問中有一個表單(“ F_Filter”),其中表示過濾數據的參數。 F_Filter表單還包含一個子表單,該子表單在同一屏幕上顯示過濾的數據表結果。 具有過濾結果的此子窗體被命名為“ Child400”。 它的源對象是“ F_FilterResults”。
我希望能夠1)在新窗口中打開子窗體,這樣我所看到的只是經過過濾的結果,以及2)將結果導出到Excel。
通常,我可以使用以下代碼通過創建按鈕並創建點擊事件在新窗口中打開表單
DoCmd.OpenForm "NameOfForm", acFormDS
但是,當我將“ Child400”作為NameOfForm放入時,此代碼不起作用。 我認為這是因為Child400是子窗體,並且Access無法識別。 我也嘗試了DoCmd.OpenForm "[F_Filter]![Child400]", acFormDS
無濟於事。 請注意,我還嘗試了DoCmd.OpenForm "F_FilterResults", acFormDS
它可以正常工作,但此表僅包含預過濾的結果。
DoCmd.OpenForm "F_FilterResults"
是正確的表格。 “ Child400”是(我假設)子窗體控件的名稱。 那不是您可以打開的表格。
然后,您需要對子表單實例應用相同的過濾器。 您現在在子表單中使用的相同方法可以用於單獨的表單。
如果您對此有疑問,請在問題中添加現有的過濾器代碼。
編輯
表單顯示的內容背后沒有魔術。 它由幾個屬性控制。 最簡單的方法可能是將它們簡單地轉換為新表單。
就像是:
Sub OpenResults()
Dim fSub As Form, fNew As Form
Set fSub = Me!Child400.Form
DoCmd.OpenForm "F_FilterResults", acFormDS
Set fNew = Forms!F_FilterResults
fNew.RecordSource = fSub.RecordSource ' if you change the RecordSource in your code
fNew.Filter = fSub.Filter
fNew.FilterOn = fSub.FilterOn
fNew.OrderBy = fSub.OrderBy
fNew.OrderByOn = fSub.OrderByOn
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.