メインフォーム (DeliveryDockets) とサブフォーム (DeliveryDocketLines) があります。メイン フォームの OnLoad イベントで、スナップショット レコードセットを設定しています。
Set oldRS = CurrentDb.OpenRecordset("SELECT * FROM DeliveryDocketLines WHERE (DelDocketID = " & Me.DelDocketID & ");", dbOpenSnapshot, dbReadOnly)
次に、ユーザーがサブフォーム データに変更を加えた後、どのような変更が加えられたかを確認したいので、[保存] ボタンの OnClick イベントで次のようにします。
Set newRS = CurrentDb.OpenRecordset("SELECT * FROM DeliveryDocketLines WHERE (DelDocketID = " & Me.DelDocketID & ");", dbOpenDynaset)
oldRS.MoveFirst
Do While Not oldRS.EOF
newRS.FindFirst ("[ID] = " & oldRS![ID])
If newRS![DeliveryQTY] <> oldRS![DeliveryQTY] Then
'record has changed
End If
oldRS.MoveNext
Loop
これは oldRS の最初のレコードに対して機能しますが、最初のレコードを通過するとすぐに、oldRS は newRS 値に更新されます。
これは、SELECT ステートメントからレコードセットを設定することと関係がありますか?
スナップショットはこれを許可しないはずだと思いました。
アドバイスをいただければ幸いです。