子窗體的全部意義在於,它是由記錄源和鏈接兒童和主域控制。讓我們說的形式爲公司及子窗體爲員工,爲子窗體的記錄源可能是:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
鏈接子和主域將CompanyID。當您瀏覽主表單時,只會顯示與當前公司相關的記錄。讓我們說,你要顯示只有那些誰在技術崗位的員工,你可以在運行時更改的記錄源:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
WHERE Position = "Technical"
或者,如果這是保持在窗體上的過濾器,添加組合框,說,主窗體和使用它作爲第二連接主機領域,所以你必須:
Link Master Fields: CompanyID; cboPosition
Link Child Fields : CompanyID; Position
最後,你可以簡單地設置過濾財產的主要形式:
Me.Employees_subform.Form.Filter = "Position=""Tecnical"""
Me.Employees_subform.Form.FilterOn = True
一世如果這不是你的想法,請在你的問題中添加一些註釋。
編輯
您可以通過表單上引用控制電源參數查詢:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
WHERE Position = Forms!MyMainForm!cboPosition
您可以徹底改變一個查詢的SQL,您可以使用ADO,但是,更改SQL與設置記錄源的方式類似,因爲SQL在代碼中進行了更改,使用ADO通常不是表單的最佳選擇。
你不能做的是改變一個參數,讓它與表單或子表單「粘在一起」。
例如:
DoCmd.SetParameter "@SomeID", "1"
' This works
DoCmd.OpenQuery ("Queryx")
' This will give a prompt for @SomeID and then run
Me.SomeSubform.Form.RecordSource = "Queryx"
VBA模塊中的內聯SQL不僅是出於可讀性的目的,也是因爲它可能會引發意外的錯誤並構成[安全威脅](http://xkcd.com/327/ )。 – StockB 2013-12-12 20:13:33