VBA Доступ к структуре данных - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть действительно сложная структура данных, к которой я пытаюсь получить доступ.Причина, по которой я настроил это так, состоит в том, что я хочу иметь структуру каждого отчета, содержащую все вопросы для этого отчета со всеми данными для каждого вопроса.Пожалуйста, ознакомьтесь с кодом ниже, чтобы понять, что я делаю.

Dim master As New Dictionary      
Dim child As New Dictionary

это происходит для каждого вопроса в отчете.Обратите внимание, в конце концов coll1-coll6 - это то, что я хочу напечатать

'coll# is a collection 
child.Add ID, Array(coll1, coll2, coll3, coll4, coll5, coll6)

, это происходит для каждого отчета в списке создаваемых отчетов

master.Add reportNumber, child

Теперь я передаю каждыйсообщайте один за другим, выполняя это

master.key(i)

Учитывая отчет из master.key (i) Я хочу иметь доступ к массиву child, который содержит все коллекции

For Each key In reportData.Keys
     Debug.Print reportData(key).Item(1).Item(1)
Next key

Приведенный выше фрагмент кода - это я, пытающийся распечатать данные из отчета внутри вопроса внутри сборника для одного из вопросов

PS.Я знаю, что это может показаться запутанным, но я считаю, что это лучшее решение для хранения списка отчетов со всеми этими данными для создания автоматических отчетов.

В общем, мой вопрос - как мне получить доступ к моим данным, которые находятся внутриколлекция в массиве.

Приветствуются предложения относительно лучшего способа сделать то, что я пытаюсь достичь.По сути, это фреймворк, в котором я могу автоматически создавать отчеты.

Я изменил массив (coll1, ..., coll6) на строку, чтобы посмотреть, смогу ли я получить к ней доступ, и она распечатана правильно.Похоже, у меня проблемы с доступом к массиву (coll1, ..., coll6)

1 Ответ

0 голосов
/ 21 ноября 2018

Похоже, это близко к тому, что вы хотите:

Sub Tester()

    Dim Master As New Dictionary
    Dim child As New Dictionary, km, kc
    Dim col1 As New Collection, col2 As New Collection

    col1.Add "Hello"
    col1.Add "World"
    col2.Add "Blue"
    col2.Add "Green"

    child.Add "ID01", Array(col1, col2)

    Master.Add "Key01", child

    For Each km In Master.Keys
        Debug.Print "Master key:", km          '>> Key01
        For Each kc In Master(km)
            Debug.Print "    Child key:", kc   '>> ID01
            Debug.Print , Master(km)(kc)(0)(1) '>> Hello
            Debug.Print , Master(km)(kc)(0)(2) '>> World
            Debug.Print , Master(km)(kc)(1)(1) '>> Blue
            Debug.Print , Master(km)(kc)(1)(2) '>> Green
        Next kc
    Next km

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...