1

我有一个主表单(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 语句设置记录集有关吗?

我认为快照应该不允许这样做。

任何建议表示赞赏。

4

0 回答 0