Dictionary为所有键创建的值等于最近的键/值添加

时间:2012-07-10 17:43:39

标签: ms-access vba dictionary ms-access-2010

我正在尝试将一些项添加到字典对象(数据库ID和值对)中,以便用户在提交之前确认其选择。我有以下代码部分,它将一个项目添加到字典中。添加后,我循环遍历Dictionary.Keys并将每个键/值打印到列表框中供用户查看。我的字典对象是我表单上的公共变量,并在Form_Load事件中设置。

Dim PickListID As Integer
If txtPercentOfStream <> "" Then
    PickListID = cboCoalTypes
    If Not CoalsInStreamDic.Exists(PickListID) Then
        CoalsInStreamDic.Add PickListID, txtPercentOfStream
    End If
Else
    Exit Sub
End If

奇怪的是,每当我添加新的键/值对时,除了新键之外,新键的值将成为所有现有键的值。

我在与字典交互之前和之后运行这个小块

Dim key As Variant
For Each key In CoalsInStreamDic.Keys
    Debug.Print key & "::" & CoalsInStreamDic.item(key)
Next key
Debug.Print

即。用户单击按钮,首先认为发生的是上面的块,以确认旧密钥具有其原始值,但它们没有。它们已经被“新价值”所取代。之后运行该块确认了这一点。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

问题是你没有添加TextBox的文本,而是添加TextBox而不是

如果您将代码更改为以下代码,则应该

If txtPercentOfStream <> "" Then
    Dim PickListID As Integer, PercentOfStream As Integer
    PercentOfStream = txtPercentOfStream
    PickListID = cboCoalTypes
    If Not CoalsInStreamDic.Exists(PickListID) Then
        CoalsInStreamDic.Add PickListID, PercentOfStream
    End If
Else
    Exit Sub
End If