1

メインフォーム (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 ステートメントからレコードセットを設定することと関係がありますか?

スナップショットはこれを許可しないはずだと思いました。

アドバイスをいただければ幸いです。

4

0 に答える 0