ms-access - Access VBA:更改记录时更改数组值
问题描述
我有一段代码旨在在执行时复制一条记录,但它却创建了一条空白记录。
我已经设法将错误跟踪到我用来保存旧记录中的字段值的数组。似乎在.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 是股票表/查询
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)
推荐阅读
- docker - 如何在 docker 容器中使用 Singularity?
- java - MainAcitivity 不进入 onNewIntent 方法并再次调用 onCreate 即使它是 SingleTask
- python-3.x - Socketio 安装问题
- c# - 使用 BitMap 类的 C# 中的图像(像素)旋转可能性
- javascript - 按钮不点击不动态点击 - javascript
- list - 如何在颤动的流构建器中打印列表的实例
- python - 有没有办法修复我的折线图上的标签?
- php - PHP if 语句,不验证,只有第一个 if 运行
- ruby-on-rails - 如何在 Ruby on Rails 中进行搜索
- r - 组中多列的R元素到元素操作