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

我要做什么

我想要一个循环,如果产品不适合该产品的存储位置,则删除该存储位置。在此循环中,我想将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中做什么是不可能的吗?

a1234567891989719 回答:在VBA MS ACCESS中用DAO记录集数据填充数组

要更改大小的数组包含要保留的数据时,请使用Redim Preserve

Redim本身也会改变大小,但也会擦除数组中的所有数据。

您可以详细了解here.


在此之后,您想更改行:

ReDim verwijderdeID(lengte)

ReDim Preserve verwijderdeID(lengte)
本文链接:https://www.f2er.com/2691264.html

大家都在问