Wie verketten ich zwei multidimensionalen Arrays in VB?
-
05-07-2019 - |
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.
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