Access VBA: 记录更改时数组值更改
Access VBA: Array values changing when record is changed
我有一段代码旨在在执行时复制一条记录,但它却创建了一条空白记录。
我已经设法将错误跟踪到我用来保存旧记录字段值的数组。似乎当 .AddNew
为 运行 时,保存值的数组将更改其所有值以匹配此新记录,换句话说,使它们全部 null
或 0
.
这是我使用的代码:
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
这里是记录集引用的地方:
- rs1 是当前订单中的商品
- rs2是股票table/query
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)
我有一段代码旨在在执行时复制一条记录,但它却创建了一条空白记录。
我已经设法将错误跟踪到我用来保存旧记录字段值的数组。似乎当 .AddNew
为 运行 时,保存值的数组将更改其所有值以匹配此新记录,换句话说,使它们全部 null
或 0
.
这是我使用的代码:
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
这里是记录集引用的地方:
- rs1 是当前订单中的商品
- rs2是股票table/query
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)