質問

このコードを持っています:

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

rs1およびrs2および2D配列。最初のインデックスは列の数(静的)を表し、2番目のインデックスは行の数(動的)を表します。

2つの配列を結合して、rs3に保存する必要があります。タイプrs1とrs2が何なのかわかりません。

役に立ちましたか?

解決 2

私はそれを理解しました。結局、私はそれを正しい方法でやっていたことがわかりました。 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           

他のヒント

列が一致することを確認しますか?そうでない場合は、どの言語でも一般的な方法でそれを行う方法がわかりません。その場合、おそらく次のように非常に実行できます。

rs1 = getResults(sSQL1 & " UNION " sSQL2)

この投稿は古いことは知っていますが、実行中に発生したいくつかのエラーを修正するためにコードを修正しました。次のコードサンプルは私のために機能します:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top