Question

J'ai ce code:

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

Tableaux RS1 et RS2 et 2D. Le premier index représente le nombre de colonnes (statique) et le deuxième index représente le nombre de lignes (dynamique).

Je dois joindre les deux tableaux et les stocker dans RS3. Je ne sais pas ce que sont les types rs1 et rs2.

Était-ce utile?

La solution 2

Je l'ai compris. Il s'est avéré que je le faisais correctement, j'étais juste à côté d'un. Vous n’avez pas besoin d’un troisième tableau non plus.

        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           

Autres conseils

Êtes-vous sûr que les colonnes vont correspondre? Parce que si ce n'est pas le cas, je ne sais pas comment vous le feriez de manière générique dans n'importe quelle langue. Si tel est le cas, vous pourrez probablement le faire très simplement comme ceci:

rs1 = getResults(sSQL1 & " UNION " sSQL2)

Je sais que ce message est ancien, mais j’ai adapté le code pour corriger certaines erreurs que j’ai rencontrées lors de son exécution. L'exemple de code suivant fonctionne pour moi:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top