首页 > 解决方案 > MS Access 集合对象值被覆盖

问题描述

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

解决方案


改变这个...

newCollection.ADD Me.ID, CStr(ID)

对此...

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

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

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


推荐阅读