私はこのコードを持っています:
rs1 = getResults(sSQL1)
rs2 = getResults(sSQL2)
rs1 と rs2 と 2D 配列。最初のインデックスは列数 (静的) を表し、2 番目のインデックスは行数 (動的) を表します。
2 つの配列を結合して、rs3 に保存する必要があります。ただし、rs1とrs2のタイプはわかりません。
私はこのコードを持っています:
rs1 = getResults(sSQL1)
rs2 = getResults(sSQL2)
rs1 と rs2 と 2D 配列。最初のインデックスは列数 (静的) を表し、2 番目のインデックスは行数 (動的) を表します。
2 つの配列を結合して、rs3 に保存する必要があります。ただし、rs1とrs2のタイプはわかりません。
列が一致することを確信していますか? そうでない場合、どの言語でも一般的な方法でそれを行う方法がわからないからです。その場合は、おそらく次のように非常に簡単に実行できます。
rs1 = getResults(sSQL1 & " UNION " sSQL2)
私はそれを理解しました。結局のところ、私はずっと正しい方法でそれを行っていたことがわかりました.1つだけずれていました. 3 番目の配列も必要ありません。
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
この投稿が古いことは承知していますが、実行中に発生したいくつかのエラーを修正するためにコードを修正しました。次のコードサンプルは私にとってはうまくいきます:
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