引用:
しかし、サブフォームで新規追加などすると、メインフォームとのずれが生じてしまったり、メインフォームとサブフォームのずれが生じてきます。
サブフォームでレコード削除や新規追加した場合、それがメインフォームには反映さませんね。
「挿入後処理」、「削除後確認」の各イベントプロシージャで、メインフォームを再クエリする処理をすればどうでしょう。
再クエリすると先頭レコードへ移動してしまうので、元のレコード位置へ戻す処理も必要になります。
Private Sub Form_AfterDelConfirm(Status As Integer)
Dim cr As Long
cr = Me.CurrentRecord
Me.Parent.Requery
Me.Recordset.AbsolutePosition = cr - 1
End Sub
Private Sub Form_AfterInsert()
Dim cr As Long
cr = Me.CurrentRecord
Me.Parent.Requery
Me.Recordset.AbsolutePosition = cr - 1
End Sub
メインフォーム側にも同様の処理は必要になると思います。
引用:
誤った項目を削除してしまっても問題なので、最初におしえていただいたSet Me.サブフォームコントロール名.Form.Recordset = Me.Recordsetで、登録や修正はメインフォーム限定で使用したほうがよいようです。
上記の手間と、メリット、デメリットを考慮して、運用に適切な方を選択すればいいでしょう。