正在覆盖MS Access集合对象值

问题描述 投票:1回答:1

我有一个用于存储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

但是,当用户移动到表单中的另一个记录时,请使用表单导航按钮从ID 1到2

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

2
2

而不是预期的

1
2

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

在我的直接控制台上:

?newCollection(1)

返回2

?newCollection(2)

也返回2

我不知道为什么会这样

ms-access access-vba
1个回答
3
投票

改变这个......

newCollection.ADD Me.ID, CStr(ID)

对...

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.