Заполните массив данными набора данных DAO в VBA MS ACCESS - PullRequest
0 голосов
/ 29 января 2020

Что я пытаюсь сделать

Я хочу все oop, которое удаляет место хранения продукта, если оно не помещается в его место хранения. В этом l oop я хочу сохранить artikelDetail_ID в массиве. После окончания l oop я хочу иметь возможность видеть все artikelDetail_ID, которые были удалены и помещены в массив во время l oop.

Когда код запустится, он удалит 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, невозможно в этом случае?

1 Ответ

2 голосов
/ 29 января 2020

Используйте Redim Preserve, когда изменяемый вами размер массива содержит данные, которые вы хотите сохранить.

Redim сам по себе также изменит размер, но также уничтожит все данные в массиве .

Подробнее об этом можно прочитать здесь.


После этого вы хотите изменить свою строку:

ReDim verwijderdeID(lengte)

до

ReDim Preserve verwijderdeID(lengte)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...