Как объединить два многомерных массива в VB?

У меня есть такой код:

rs1 = getResults(sSQL1)
rs2 = getResults(sSQL2)

rs1 и rs2 и 2D-массивы. Первый индекс представляет количество столбцов (статический), а второй индекс представляет количество строк (динамический).

Мне нужно объединить два массива и сохранить их в rs3. Я не знаю, что это за тип rs1 и rs2.

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
4 399
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы уверены, что столбцы совпадут? Потому что, если это не так, я не знаю, как бы вы сделали это в общем виде на любом языке. Если это так, то вы, вероятно, могли бы сделать это очень просто так:

rs1 = getResults(sSQL1 & " UNION " sSQL2)

Да, я уверен. Они оба выполняют одни и те же хранимые процедуры (я знаю, но я этого не писал, мне просто нужно поддерживать это)

ilitirit 06.10.2008 20:02
Ответ принят как подходящий

Я понял это. Оказывается, я все время делал это правильно, я только что сбивался с пути. Вам также не нужен третий массив.

        aRS_RU = rowsQuery(sSQL & ", 'RU'")
        aRS_KR = rowsQuery(sSQL & ", 'KR'")

        uboundRU1 = UBound(aRS_RU, 1)
        uboundRU2 = UBound(aRS_RU, 2)
        uboundKR2 = Ubound(aRS_KR, 2)

        ' Redim original array
        ReDim Preserve aRS_RU(uboundRU1, uboundRU2 + uboundKR2 + 1 )
        uboundRU2 = UBound(aRS_RU, 2)

        ' Add the values from the second array            
        For m = LBound(aRS_KR, 1) To UBound(aRS_KR, 1)      'Loop for 1st dimension
            For n = LBound(aRS_KR, 2) To UBound(aRS_KR, 2)  'Loop for 2nd dimension
                aRS_RU(m, uboundRU2 + n) = aRS_KR(m,n)
            Next
        Next           

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

Sub ConcatRecordSets(ByRef avFirstRS As Variant, ByRef avSecondRS As Variant)

    Dim lIndex1 As Long, lIndex2 As Long
    Dim lFirstRSSize As Long, lSecondRSSize As Long

    ' Redim original array
    lFirstRSSize = UBound(avFirstRS, 2) - LBound(avFirstRS, 2) + 1
    lSecondRSSize = UBound(avSecondRS, 2) - LBound(avSecondRS, 2) + 1
    ReDim Preserve avFirstRS(LBound(avFirstRS, 1) To UBound(avFirstRS, 1), LBound(avFirstRS, 2) To UBound(avFirstRS, 2) + lSecondRSSize)

    ' Add the values from the second array
    For lIndex1 = LBound(avSecondRS, 1) To UBound(avSecondRS, 1)      ' Loop for 1st dimension
        For lIndex2 = LBound(avSecondRS, 2) To UBound(avSecondRS, 2)  ' Loop for 2nd dimension
            avFirstRS(lIndex1, lFirstRSSize + lIndex2) = avSecondRS(lIndex1, lIndex2)
        Next lIndex2
    Next lIndex1

End Sub

почему бы вам просто не использовать Array.Resize + Array.Copy?

Cole Johnson 30.05.2012 06:49

Другие вопросы по теме