如何在 VBA 中制作字典集合



我正在尝试在VBA中建立一个字典集合。生成集合后,它将转换为 JSON,并在 HTTP 请求中发送到 Web 服务。

由于字典是对象,因此它们通过引用而不是按值添加到集合中。结果是我的收藏由相同的词典组成,而不是我想要的单个词典。

Dim qdf As DAO.QueryDef
Dim rs As DAO.Recordset
Set qdf = CurrentDb.QueryDefs("qryTutors")
Set rs = qdf.OpenRecordset
Dim tutors As New Collection
If Not (rs.EOF And rs.BOF) Then
    Do Until rs.EOF = True
        Dim tutor As New Scripting.Dictionary
        tutor.Add "TutorName", rs!TutorFirstName.Value & " " & rs!TutorSurname.Value
        tutor.Add "TutorEmail", rs!TutorEmail.Value
        tutor.Add "TutorSubject", rs!TutorSubject.Value
        tutors.Add tutor
        tutor.RemoveAll
        rs.MoveNext
    Loop
End If
txtOutput.Value = JsonConverter.ConvertToJson(tutors)
rs.Close 'Close the recordset
Set rs = Nothing 'Clean up

任何帮助表示赞赏,谢谢。

在每次迭代中使用一个新字典:

Dim qdf As DAO.QueryDef
Dim rs As DAO.Recordset
Set qdf = CurrentDb.QueryDefs("qryTutors")
Set rs = qdf.OpenRecordset
Dim tutors As New Collection
Dim tutor As Scripting.Dictionary
If Not (rs.EOF And rs.BOF) Then
    Do Until rs.EOF = True
        Set tutor = New Scripting.Dictionary
        tutor.Add "TutorName", rs!TutorFirstName.Value & " " & rs!TutorSurname.Value
        tutor.Add "TutorEmail", rs!TutorEmail.Value
        tutor.Add "TutorSubject", rs!TutorSubject.Value
        tutors.Add tutor
        rs.MoveNext
    Loop
End If
txtOutput.Value = JsonConverter.ConvertToJson(tutors)
rs.Close 'Close the recordset
Set rs = Nothing 'Clean up

最新更新