Sensem podformularzu jest to, że jest sterowany przez źródło nagrywania i łącza dziecka i pól mistrzowskich. Powiedzmy forma jest Spółka oraz podformularzu jest zatrudnionych, źródło rekord podformularzu może być:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
Link dziecko i mistrzowskie pola byłyby CompanyID. Podczas przechodzenia przez formularz główny będą wyświetlane tylko te wpisy, które odnoszą się do bieżącej firmy. Powiedzmy, że potem chcesz wyświetlić tylko tych pracowników, którzy są w stanie technicznym, można zmienić źródło nagrywania w czasie wykonywania:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
WHERE Position = "Technical"
lub jeśli jest to zawsze będzie filtr na formularzu, dodać combobox, powiedzmy, do głównego formularza i użyć jej jako drugiego Link Master dziedzinie, więc trzeba:
Link Master Fields: CompanyID; cboPosition
Link Child Fields : CompanyID; Position
Wreszcie, można po prostu ustawić właściwość filtra od głównego formularza:
Me.Employees_subform.Form.Filter = "Position=""Tecnical"""
Me.Employees_subform.Form.FilterOn = True
ja Jeśli nie o to Ci chodzi, dodaj uwagi do swojego pytania.
EDIT
można dostarczać parametry zapytania poprzez odniesienie do kontroli na formularzu:
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
WHERE Position = Forms!MyMainForm!cboPosition
można całkowicie zmienić SQL kwerendy i można korzystać z ADO jednak, zmiana języka SQL jest podobna do ustawienia źródła rekordu, ponieważ kod SQL zmienia się w kodzie, a użycie ADO zwykle nie jest najlepszym wyborem dla formularzy.
Nie można zmienić parametru i "przykleić" go do formularza lub podformularza.
Na przykład:
DoCmd.SetParameter "@SomeID", "1"
' This works
DoCmd.OpenQuery ("Queryx")
' This will give a prompt for @SomeID and then run
Me.SomeSubform.Form.RecordSource = "Queryx"
Inline SQL w module VBA jest złym pomysłem nie tylko dla celów czytelności, ale także dlatego, że może powodować nieoczekiwane błędy i stanowić [zagrożenie bezpieczeństwa] (http://xkcd.com/327/). – StockB