2016-08-23 2 views
0

Wie kann ich foreach die zurückgegebenen Zeilen von ADODB.Resultset? Und ist es möglich, Werte nach Spaltennamen zu erhalten (zB wenn ich Wert von Spalte "Name" in Zeile 3 in Zelle A1 bekommen möchte)?VBA ADODB foreach Zeilen und Spalten

Hier ist mein aktueller Code ohne Schleifen:

Dim oConn As ADODB.Connection 
Set oConn = New ADODB.Connection 

oConn.Open "Driver={MySQL ODBC 5.2 Unicode Driver};Server=****;Database=****;Uid=****;Pwd=****;" 

Dim oRS As ADODB.Recordset 
Set oRS = New ADODB.Recordset 

oRS.Open "SELECT * FROM report_access", oConn, adOpenStatic 

With oRS 
    Cells(1, 1).CopyFromRecordset oRS 
End With 

Vielen Dank im Voraus.

Antwort

0
Try this for iteration 

    while not (ors.EOF Or ors.BOF) 

    for each x in ors.Fields 
     'Assign cell content 

    next 
    ors.MoveNext 

wend 
+0

Ple ase nicht nur Code, erklären Sie es, damit das OP von Ihrer Antwort lernen kann. – EBH

0

Sie können die abgefragten Daten in ein Array bewegen, um die ‚GetRows‘ verwenden und die Werte aus dem Array erhalten, wie Sie

wünschen

Zum Beispiel

arr = oRS.GetRows 

i = 0 
If Not (oRS.EOF And oRS.BOF) Then 
oRS.MoveFirst 
    Do Until oRS.EOF = True 
     MsgBox arr(0, i) 
     i = i + 1 
     oRS.MoveNext 
    Loop 
Else 
    MsgBox "There are no records in the recordset." 
End If 

Dies ist die erste Spalte Alarmieren wird Werte

Hinweis: Hier arr (3,2) bedeutet, 3. Spalte und zweiten Zeile

0

Nicht direkt. Sie können 3 oRS.MoveNext

while not oRS.EOF And oRS.AbsolutePosition < 2 
    oRS.MoveNext 
wend 
[A1] = oRS.Fields("name") 

Zeile 3 mit bewegen oder Sie können den Index des "name" -Feld finden und oRS.GetRows

Dim nameIndex As Integer 

For nameIndex = 0 To oRS.Fields.Count - 1 
    If oRS.Fields(nameIndex).Name = "name" Then Exit For 
Next 

arr = oRS.GetRows 

[a1] = arr(2, nameIndex) 

aktualisieren

Sie können sich wahrscheinlich oRS.Move verwenden verwenden

oRS.Move 2 
[A1] = oRS.Fields("name") 
Verwandte Themen