我有一个主表单(DeliveryDockets)和子表单(DeliveryDocketLines)。在主要表单 OnLoad 事件中,我正在设置快照记录集。
Set oldRS = CurrentDb.OpenRecordset("SELECT * FROM DeliveryDocketLines WHERE (DelDocketID = " & Me.DelDocketID & ");", dbOpenSnapshot, dbReadOnly)
然后在用户对子表单数据进行更改后,我想检查一下进行了哪些更改,所以在 Save 按钮的 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 语句设置记录集有关吗?
我认为快照应该不允许这样做。
任何建议表示赞赏。