在VBA MS ACCESS中使用DAO记录集数据填充数组
我想做什么 我想要一个循环,如果产品的storagelocation不适合他的storagelocation,那么它会删除该产品的storagelocation。在这个循环中,我想将artikelDetail_ID保存在一个数组中。循环结束后,我希望能够看到所有在循环过程中被删除并放入数组的artikelDetail_ID 当代码运行时,它将删除6条记录 我的解决方案在VBA MS ACCESS中使用DAO记录集数据填充数组,vba,ms-access,recordset,Vba,Ms Access,Recordset,我想做什么 我想要一个循环,如果产品的storagelocation不适合他的storagelocation,那么它会删除该产品的storagelocation。在这个循环中,我想将artikelDetail_ID保存在一个数组中。循环结束后,我希望能够看到所有在循环过程中被删除并放入数组的artikelDetail_ID 当代码运行时,它将删除6条记录 我的解决方案 Dim verwijderdeID() As Variant Dim lengte As Integer lengte = 0
Dim verwijderdeID() As Variant
Dim lengte As Integer
lengte = 0
With recordset_opslag_detail_info
Do Until recordset_opslag_detail_info.EOF
If (huidige_doos_max_aantal - huidige_doos_inhoud >= 0) Then
Exit Do
End If
ReDim verwijderdeID(lengte)
verwijderdeID(lengte) = recordset_opslag_detail_info!ArtikelDetail_ID
lengte = lengte + 1
huidige_doos_inhoud = huidige_doos_inhoud - recordset_opslag_detail_info!Voorraadperartikel
.Edit
!tmea_opslag_locatie = Null
.Update
recordset_opslag_detail_info.MoveNext
Loop
End With
Dim i As Integer
For i = 0 To UBound(verwijderdeID)
MsgBox verwijderdeID(i)
Next
问题
当我的代码找到多条记录时,它将只保护数组中的最后一条记录。根据示例,如果我尝试使用记录集中的6个值填充数组,那么只有verwijderID(5)会有一个值
我试图在VBA中执行的操作是不可能的吗?当更改数组大小的数组包含要保留的数据时,请使用
Redim Preserve
Redim
本身也会更改大小,但也会擦除阵列中的所有数据
你可以阅读更多关于它的内容
以下是您想要更改的行:
ReDim verwijderdeID(lengte)
到
当要更改数组大小的数组包含要保留的数据时,请使用
Redim Preserve
Redim
本身也会更改大小,但也会擦除阵列中的所有数据
你可以阅读更多关于它的内容
以下是您想要更改的行:
ReDim verwijderdeID(lengte)
到
Redim
删除数组中的值,Redim Preserve
保留这些值。我认为这应该解决你的问题。一些额外的信息:@Beek抓得好。@Beek现在可以用了。非常感谢。请注意,Redim Preserve
具有不断增加的数组是一种反模式。这将比必要的慢得多,因为它将为每次迭代重新分配和复制数组。使用集合
,这样就不会有这个问题。如果我的数据集总是少于10条记录。如果我使用Collection
而不是ReDim
,会有很大的时间优势吗?ReDim
删除数组中的值,ReDim Preserve
保留这些值。我认为这应该解决你的问题。一些额外的信息:@Beek抓得好。@Beek现在可以用了。非常感谢。请注意,Redim Preserve
具有不断增加的数组是一种反模式。这将比必要的慢得多,因为它将为每次迭代重新分配和复制数组。使用集合
,这样就不会有这个问题。如果我的数据集总是少于10条记录。如果我使用Collection
而不是ReDim
,会有很大的时间优势吗?