2016-08-23 4 views
0

ADODB.Resultset에서 반환되는 행을 foreach 어떻게 할 수 있습니까? 그리고 열 이름으로 값을 가져올 수 있습니까? 예를 들어, 3 행에서 "name"열의 값을 셀 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 

예를 들어

을 원하는대로 배열에서 값을 얻을 수 있습니다 값

참고 : 여기서 arr (3,2)는 3 열 2 행을 의미합니다.

0

직접적으로. 당신은 3 oRS.MoveNext

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

과 3 행으로 이동하거나 "이름"필드의 인덱스를 찾을 수 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) 

이 업데이트

당신은 아마 oRS.Move을 사용할 수 있습니다 사용

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