Domanda

Ho questo codice:

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

array rs1 e rs2 e 2D. Il primo indice rappresenta il numero di colonne (statico) e il secondo indice rappresenta il numero di righe (dinamico).

Devo unire i due array e memorizzarli in RS3. Non so che tipo siano rs1 e rs2.

È stato utile?

Soluzione 2

L'ho capito. Si è scoperto che lo stavo facendo nel modo giusto da sempre, ero appena uscito da uno. Non è nemmeno necessario un terzo array.

        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           

Altri suggerimenti

Sei sicuro che le colonne corrisponderanno? Perché se così non fosse, non so come lo faresti in modo generico in qualsiasi lingua. In tal caso, probabilmente potresti farlo molto semplicemente in questo modo:

rs1 = getResults(sSQL1 & " UNION " sSQL2)

So che questo post è vecchio, ma ho adattato il codice per correggere alcuni errori che ho avuto durante la sua esecuzione. Il seguente esempio di codice funziona per me:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top