首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RecordSet填充字典

从RecordSet填充字典
EN

Stack Overflow用户
提问于 2014-09-04 16:32:56
回答 2查看 6K关注 0票数 2

我在想有没有人能帮我。我正在尝试从sql表返回的记录集中填充公共字典。

这一切似乎都很好,除了一个部分。我不知道它是否没有正确地计算字典中的键数,或者它们的输入不正确,但是无论出于什么原因,当我试图显示总计数时,它总是只带着1(应该在15左右)返回,并且只显示第一行的详细信息。

有人能帮忙吗?

代码语言:javascript
复制
Public UserList As New scripting.Dictionary
Sub UserDL()
Dim USList As Range
Dim USArr(0 To 11) As Variant

Call ConnecttoDB

Set Cmd = New adodb.Command: Set rs = New adodb.Recordset

With Cmd
    .CommandTimeout = 30
    .ActiveConnection = cn
    .CommandText = "CSLL.DLUsers"

    Set rs = .Execute
End With

With rs
    If Not .BOF And Not .EOF Then
        .MoveLast
        .MoveFirst
        While (Not .EOF)
            For i = 1 To 11
                USArr(i - 1) = rs(i)
            Next i

                With UserList
                    If Not .Exists(rs("Alias")) Then
                        .Add Key:=rs("Alias"), Item:=USArr
                    End If
                End With
            .MoveNext
        Wend
    End If
End With

IA = UserList.Items
Debug.Print UserList.Count & " Items in the dictionary"
For Each element In IA
    For i = 0 To 10
        Debug.Print element(i)
    Next i
Next element

Set Cmd = Nothing: Set rs = Nothing ': Set UserList = Nothing
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-04 16:53:10

rs("Alias")存储在变量中,然后使用该变量作为键。

代码语言:javascript
复制
 dim sKey as String

    With UserList
    sKey=rs("Alias")
       If Not .Exists(sKey) Then
           .Add sKey,USArr
       End If
     End With
票数 3
EN

Stack Overflow用户

发布于 2016-11-02 00:15:57

rs(“别名”)是一个字段对象。字段对象的默认属性是Value,因此通常只引用Field对象就可以得到我们想要的值。但是,字典可以存储对象(作为值或键),因此当您添加对象时,它实际上存储的是对象而不是默认属性。因此,在代码中,添加rs("Alias")作为键,即对象而不是值。当您移动到下一个记录时,rs("Alias")仍然是相同的对象--只有值已经更改。因此,当您检查密钥是否存在时,它就会存在。您需要添加Value属性作为键。

aa_dd的答案之所以有效,是因为它将值存储在变量中,然后使用该值作为键,即不使用Field对象。

另一种方法是显式地使用字段对象的Value属性。

代码语言:javascript
复制
With UserList
    If Not .Exists(rs("Alias").Value) Then
        .Add Key:=rs("Alias").Value, Item:=USArr
    End If
End With
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25670687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档