サブフォームの要点は、レコード ソースとリンクの子およびマスター フィールドによって制御されることです。フォームが Company で、サブフォームが Employees であるとします。サブフォームのレコード ソースは次のようになります。
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
リンクの子フィールドとマスター フィールドは CompanyID になります。マスター フォームを移動すると、現在の会社に関連するレコードのみが表示されます。次に、技術職の従業員のみを表示したいとします。実行時にレコード ソースを変更できます。
SELECT EmployeeID, CompanyID, Position, Etc FROM Employees
WHERE Position = "Technical"
または、これが常にフォームのフィルターである場合は、メイン フォームにコンボボックスを追加し、それを 2 番目のリンク マスター フィールドとして使用すると、次のようになります。
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"