Frage

Ich habe diesen Code habe:

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

RS1 und RS2 und 2D-Arrays. Der erste Index gibt die Anzahl der Spalten (statisch) und den zweiten Index gibt die Anzahl der Zeilen (dynamisch).

Ich brauche die beiden Arrays zu verbinden und sie in rs3. Ich weiß nicht, welche Art RS1 und RS2 sind aber.

War es hilfreich?

Lösung 2

Ich habe es herausgefunden. Es stellte sich heraus, dass ich es der richtige Weg die ganze Zeit tat, war ich dran, nur um eins. Sie brauchen nicht ein drittes Array brauchen auch nicht.

        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           

Andere Tipps

Sind Sie sicher, dass die Spalten zusammenpassen werden? Denn wenn das nicht der Fall ist, weiß ich nicht, wie Sie es in allgemeiner Weise in jeder Sprache tun würden. Wenn dies der Fall ist, dann könnte man wahrscheinlich tun es sehr einfach wie folgt aus:

rs1 = getResults(sSQL1 & " UNION " sSQL2)

Ich weiß, dass dieser Beitrag ist alt, aber ich geeignet ist, den Code einige Fehler zu beheben ich während seiner Ausführung hatte. Das folgende Codebeispiel funktioniert für mich:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top