Доступ к VBA: значения массива изменяются при изменении записи - PullRequest
0 голосов
/ 15 октября 2018

У меня есть фрагмент кода, который предназначен для дублирования записи при выполнении, но вместо этого он создает пустую запись.

Мне удалось отследить ошибку в массиве, который я использовал для хранения полязначения из старой записи.Кажется, что при запуске .AddNew массив, содержащий значения, изменил бы все свои значения в соответствии с этой новой записью, другими словами, сделав их все null или 0.

Вот код IЯ использую:

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 - таблица запасов/ query

TempArray - это массив, с которым у меня возникли проблемы, поэтому, если кто-то может указать способ остановить его изменение или лучший способ сделать это, он будет очень признателен.

1 Ответ

0 голосов
/ 15 октября 2018

Это распространенная ошибка.Вы добавляете объекты полей набора записей в массив вместо значений полей набора записей.

Вот исправление кода:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...