我如何foreach
ADODB.Resultset
返回的行?是否可以按列名获取值(例如,如果我想从第3行的列“name”获取值到单元格A1)?
这是我当前没有任何循环的代码:
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 :(得分: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
答案 1 :(得分: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行
答案 2 :(得分:0)
不直接。您可以使用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)
<强>更新强>
您可以使用oRS.Move
oRS.Move 2
[A1] = oRS.Fields("name")