Access VBA: 记录更改时数组值更改

Access VBA: Array values changing when record is changed

我有一段代码旨在在执行时复制一条记录,但它却创建了一条空白记录。

我已经设法将错误跟踪到我用来保存旧记录字段值的数组。似乎当 .AddNew 为 运行 时,保存值的数组将更改其所有值以匹配此新记录,换句话说,使它们全部 null0.

这是我使用的代码:

With rs1
    .MoveLast
    .MoveFirst
    Do Until .EOF
        rs2.FindFirst "ItemID = " & !ItemID
        rs2.Edit
        rs2!ItemQuantity = rs2!ItemQuantity - !OrderQuantity
        TempArray = Array(rs2!ItemCode, rs2![Dia/Size], rs2!ItemType, rs2!Description, rs2!ItemAdded, rs2!ItemSaleValue, rs2!ItemBuyValue, rs2!ItemLocation, rs2!ItemCondition, rs2!ItemOrigin, rs2!ItemOriginDescription, rs2!ItemHistory)
        rs2.Update

        rs2.AddNew
        rs2!ItemCode = TempArray(0)
        rs2![Dia/Size] = TempArray(1)
        rs2!ItemType = TempArray(2)
        rs2!Description = TempArray(3)
        rs2!ItemAdded = TempArray(4)
        rs2!ItemSaleValue = TempArray(5)
        rs2!ItemBuyValue = TempArray(6)
        rs2!ItemLocation = TempArray(7)
        rs2!ItemCondition = TempArray(8)
        rs2!ItemOrigin = TempArray(9)
        rs2!ItemOriginDescription = TempArray(10)
        rs2!ItemHistory = TempArray(11)
        rs2!ItemBooked = True
        rs2!ItemBookedBy = Me.OrderBy
        rs2!ItemBookedWhen = Now()
        rs2!ItemBookedNote = Me.OrderID
        rs2.Update
        .MoveNext
    Loop
End With

这里是记录集引用的地方:

TempArray 是我遇到问题的数组,所以如果有人能指出阻止它更改的方法或更好的方法来做到这一点,我们将不胜感激。

这是一个常见的错误。您正在将记录集的字段对象而不是记录集字段值添加到数组。

这里是代码修复:

TempArray = Array(rs2!ItemCode.Value, rs2![Dia/Size].Value, rs2!ItemType.Value, rs2!Description.Value, rs2!ItemAdded.Value, rs2!ItemSaleValue.Value, rs2!ItemBuyValue.Value, rs2!ItemLocation.Value, rs2!ItemCondition.Value, rs2!ItemOrigin.Value, rs2!ItemOriginDescription, rs2!ItemHistory.Value)