كيف يمكنني سلسلة اثنين من صفائف متعددة الأبعاد في VB؟

StackOverflow https://stackoverflow.com/questions/174885

سؤال

ولقد حصلت على هذا الرمز:

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

وRS1 وRS2 و2D المصفوفات. يمثل أول مؤشر عدد الأعمدة (ثابت) والمؤشر الثاني يمثل عدد الصفوف (دينامية).

ولست بحاجة للانضمام إلى صفوف اثنين وتخزينها في RS3. أنا لا أعرف ما نوع RS1 وRS2 هي بالرغم من ذلك.

هل كانت مفيدة؟

المحلول 2

ولقد حظيت بها. تبين لي كان يفعل ذلك بالطريقة الصحيحة طوال الوقت، كنت فقط من جانب واحد. أنت لا تحتاج إلى مجموعة ثالثة أيضا.

        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