2017-11-10 12 views
3

私はVBAで辞書のコレクションを構築しようとしています。コレクションが作成されると、コレクションはJSONに変換され、HTTPリクエストでWebサービスに送信されます。VBAで辞書のコレクションを作成するにはどうすればよいですか?

辞書はオブジェクトなので、値ではなく参照によってコレクションに追加されます。その結果、私のコレクションは、私が望む個々の辞書ではなく、同一の辞書で構成されています。

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 

ご協力いただきありがとうございます。

答えて

2

使用各反復における新しい辞書:

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 
関連する問題