Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA MS ACCESS中使用DAO记录集数据填充数组_Vba_Ms Access_Recordset - Fatal编程技术网

在VBA MS ACCESS中使用DAO记录集数据填充数组

在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

我想做什么

我想要一个循环,如果产品的storagelocation不适合他的storagelocation,那么它会删除该产品的storagelocation。在这个循环中,我想将artikelDetail_ID保存在一个数组中。循环结束后,我希望能够看到所有在循环过程中被删除并放入数组的artikelDetail_ID

当代码运行时,它将删除6条记录

我的解决方案

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
,会有很大的时间优势吗?