2016-08-23 5 views
0

Как может foreach возвращенных строк от ADODB.Resultset? И можно ли получить значения по имени столбца (например, если я хочу получить значение из столбца «имя» в строке 3 в ячейке A1)?VBA ADODB для строк и столбцов foreach

Вот мой текущий код без петель:

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 

Спасибо заранее.

ответ

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 не публикует только код, объясняйте его, поэтому OP может узнать из вашего ответа. – EBH

0

вы можете переместить запрошенные данные в массив, используя «GetRows» и получить значения из массива, как вы хотите

Например

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 

Это предупредит первый столбец значения

Примечание: Здесь обр (3,2) означает, что 3-й и 2-й столбец строки

0

Не напрямую. Вы можете перейти к строке 3 с 3 oRS.MoveNext

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

или вы можете найти индекс поля "имя" и использовать 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) 

Update

Вы можете, вероятно, использовать oRS.Move

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