#ms-access #vba
#ms-access #vba
Вопрос:
У меня есть глобальный объект коллекции в форме, который я использую для хранения идентификаторов.
Dim newCollection As New Collection
Когда пользователь нажимает btn
Private Sub btn_Click()
Dim key As Variant
newCollection.ADD Me.ID, CStr(ID)
For Each key In newCollection
Debug.Print key
Next key
End Sub
Когда пользователь имеет идентификатор 1 в формах и нажимает кнопку выше, я получаю ожидаемый 1
результат в моем непосредственном окне
Но когда пользователь переходит к другой записи в форме, скажем, с идентификатора 1 на 2, используя кнопку навигации по формам
По какой-то причине Debug.Print key
возвращает
2
2
вместо ожидаемого
1
2
По какой-то причине ключ не перезаписывается, но значение перезаписывается. Я имею в виду, что
На моей непосредственной консоли:
?newCollection(1)
возвращает 2
И
?newCollection(2)
также возвращает 2
Я не знаю, почему это происходит
Ответ №1:
Измените это …
newCollection.ADD Me.ID, CStr(ID)
к этому …
newCollection.ADD Me.ID.Value, CStr(ID)
В первом случае вы добавляете объект field. Поэтому, когда вы позже Debug.Print key
, вы печатаете текущее значение этого поля. (Это может иметь больше смысла, если вы сделаете Debug.Print TypeName(key)
это временно.)
Вам нужно добавить значение поля вместо самого поля.