首页 > 解决方案 > Access VBA:更改记录时更改数组值

问题描述

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

我已经设法将错误跟踪到我用来保存旧记录中的字段值的数组。似乎在.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是我遇到问题的数组,所以如果有人能指出一种方法来阻止它改变或更好的方法来做到这一点,那将不胜感激。

标签: ms-accessvbams-access-2016

解决方案


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

这是代码修复:

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)

推荐阅读