Pregunta

Tengo este código:

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

rs1 y rs2 y matrices 2D. El primer índice representa el número de columnas (estáticas) y el segundo índice representa el número de filas (dinámicas).

Necesito unir los dos arreglos y almacenarlos en rs3. No sé qué tipo de rs1 y rs2 son sin embargo.

¿Fue útil?

Solución 2

Lo he descubierto. Resulta que lo estaba haciendo de la manera correcta todo el tiempo, solo estaba apagado por uno. Tampoco necesitas una tercera matriz.

        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           

Otros consejos

¿Estás seguro de que las columnas coincidirán? Porque si ese no es el caso, no sé cómo lo haría de forma genérica en cualquier idioma. Si es así, entonces probablemente podría hacerlo muy simplemente así:

rs1 = getResults(sSQL1 & " UNION " sSQL2)

Sé que esta publicación es antigua, pero adapté el código para corregir algunos errores que tuve durante su ejecución. El siguiente ejemplo de código funciona para mí:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top