MS Access集合对象值被覆盖

时间:2019-04-18 03:34:04

标签: ms-access access-vba

我有一个用于存储ID的全局收集对象。

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

当用户在表单中的ID为1并按下上方的按钮时,我会在即时窗口中返回预期的1

但是,当A用户以表单的形式移至另一条记录时,我们使用表单导航按钮将ID从1更改为2。

由于某些原因,Debug.Print key返回

2
2

而不是预期的

1
2

由于某种原因,密钥不会被覆盖,但值会被覆盖。我的意思是那个

在我的直接控制台上:

?newCollection(1)

返回2

?newCollection(2)

还返回2

我不知道为什么会这样

1 个答案:

答案 0 :(得分:3)

更改此...

newCollection.ADD Me.ID, CStr(ID)

对此...

newCollection.ADD Me.ID.Value, CStr(ID)

在第一种情况下,您要添加一个字段对象。因此,以后Debug.Print key时,您正在打印该字段的当前值。 (如果您暂时执行Debug.Print TypeName(key),这可能会更有意义。)

您需要添加字段的值,而不是字段本身。