別のオプションは、サブフォームが表示するレコードセットのPKを連結する関数を記述することです。あなたのメインフォームがCompanyで、サブフォームに従業員がリストアップされているとします。サブフォームコントロールのLinkMasterFieldsとLinkChildFieldsプロパティはCompanyID(CompanyテーブルのPK、EmployeesテーブルのFK)になります。したがって
、親が特定の会社の記録にあるときに、サブフォームに表示されるレコードの同じセットを取得する:
今
Dim db As DAO.Database
Dim strSQL As String
Dim rst As DAO.Recordset
Dim strEmployeeIDList As String
Set db = CurrentDB
strSQL = "SELECT Employees.* FROM Employees WHERE CompanyID="
strSQL = strSQL & Me!CompanyID & ";"
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount > 0 Then
With rs
.MoveFirst
Do Until .EOF
strEmployeeIDList = strEmployeeIDList & ", " & !CompanyID
.MoveNext
Loop
End With
strEmployeeIDList = Mid(strEmployeeIDList, 3)
End If
rs.Close
Set rs = Nothing
Set db = Nothing
、なぜあなたはこれを行う代わりにalready-を歩くだろう開いたレコードセット(つまり、サブフォームのRecordsetClone)?私は分かりません。特定のフォーム/サブフォームにルックアップを関連させたくない場合があります。連結してレコードセットを受け取り、上記のように宣言されたレコードセットを渡すか、サブフォームのRecordsetCloneに渡すことで、それを修正できます。その場合、フォーム/サブフォームに束縛されることなく連結機能をどちらかの方法で使用することができます。
Do Whileループ内にMoveNextを追加します。それ以外の場合は、... boomまで同じ値を繰り返し連結します! – HansUp
また、使用しているレコードセットが既に存在する場合、新しいレコードセットポインタを設定するための送信もほとんど行いません。上記のコードは "WITH Me!SubForm.Form.RecordsetClone"を使用して書き換えられ、作成したレコードセット変数をクリーンアップする必要があります(おそらく、上記のコードで閉じないでください。閉じていないレコードセット、つまりサブフォームのRecordsetCloneで実際に動作しています)。 –