Array - Werte hinzufügen

Fragen zu allen anderen Office Anwendungen

Moderator: ModerationP

Array - Werte hinzufügen

Beitragvon timtom » 22. Mai 2017, 08:51

Hallo

Mit GetRows() speichere ich das Datenset eines ADODB.Recordsets in einem 2D-Array (vTable)
Nun möchte ich noch die Feldernamen (rs.Fields) oben im Array hinzufügen, so dass im Array dann in der 1. Zeile die Spaltentitel stehen.

Wie mache ich das am besten?


Code: Alles auswählen
    Dim vTable As Variant
   
    Set rs = New ADODB.Recordset
    //...

   vTable = rs.GetRows(rs.RecordCount)
   
    //...   
    For i = 0 To rs.Fields.Count - 1
       //  rs.Fields(i).Name in vTable Array hinzufügen
    Next
timtom
 

Re: Array - Werte hinzufügen

Beitragvon timtom » 22. Mai 2017, 19:08

Zur Versanschaulichung: Die gründe Zeile soll oben im 2D (Variant-)Array hinzugefügt werden.

Geht das, indem man das bestehende Array redimensioniert?

https://pasteboard.co/Afprl6u.png
timtom
 

Re: Array - Werte hinzufügen

Beitragvon DerHoepp » 23. Mai 2017, 13:42

Hallo timtom,

am einfachsten, mit einem zweiten Array (getestet hab ichs in Excel, deswegen auch zum Schluss das .CopyFromRecordset.):
Code: Alles auswählen
Option Explicit

Const DATA_SOURCE = "xxx"
Const TABLE_NAME = "xxx"

Sub test()
    Dim cn As Object
    Dim rs As Object
    Dim Zeile As Long
    Dim Spalte As Long
    Dim TempArray As Variant
    Dim TableArray As Variant
   
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
   
    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DATA_SOURCE & ";Persist Security Info=False;"
    cn.Open
 
    rs.Open "SELECT * FROM " & TABLE_NAME, cn
    rs.movefirst
    TempArray = rs.GetRows
    'Dimensionen: (Spalte, Zeile)
    ReDim TableArray(LBound(TempArray, 1) To UBound(TempArray, 1), LBound(TempArray, 2) To UBound(TempArray, 2) + 1)
   
    For Spalte = LBound(TableArray, 1) To UBound(TableArray, 1)
        TableArray(Spalte, 0) = rs.Fields(Spalte).Name
    Next Spalte
   
    For Zeile = LBound(TempArray, 2) To UBound(TempArray, 2)
        For Spalte = LBound(TempArray, 1) To UBound(TempArray, 1)
            TableArray(Spalte, Zeile + 1) = TempArray(Spalte, Zeile)
        Next Spalte
    Next Zeile
    Tabelle1.Cells(1, 1).Resize(UBound(TableArray, 2) + 1, UBound(TableArray, 1) + 1) = WorksheetFunction.Transpose(TableArray)
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
   
End Sub


Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8286
Registriert: 14. Mai 2013, 11:08

Re: Array - Werte hinzufügen

Beitragvon timtom » 26. Mai 2017, 10:10

Vielen Dank derHöpp!
timtom
 


Zurück zu Andere Office Fragen (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast