我正在尝试重用在ODBC驱动程序上运行查询的VBA宏。代码已经为我服务了几个月,进入一个不同的文件并查询不同的数据库方案(都是MySQL)。
它现在无法正常工作,我不明白为什么:我得到EOF = 1(我认为这是合理的)暂停宏执行。
我在这里找到的唯一与EOF相关的类似问题是this one,我无法使用。
这是我的代码:我总是收到错误消息“出错了。”
DBAutoQuery()
Dim oConn As ADODB.Connection
Dim RecSet As ADODB.Recordset
Dim Fld As ADODB.Field
Dim Col, Row As Integer
Dim ws As ThisWorkbook
Set ws = ThisWorkbook
Application.ScreenUpdating = False
Set oConn = New ADODB.Connection
Set RecSet = New ADODB.Recordset
oConn.ConnectionString = "driver={MySQL ODBC 5.3 ANSI Driver};Server=odbc-
staff-01.corp.booking.com;Database=staff;User=" & User & ";Password=" & Pw &
";ENABLE_CLEARTEXT_PLUGIN=1"
oConn.ConnectionTimeout = 30
oConn.Open
RecSet.Open mYsql, oConn, adOpenStatic, adLockOptimistic
If RecSet.EOF Then
MsgBox "Something went wrong."
RecSet.Close
oConn.Close
Exit Sub
End If
Sheets(TargetSheetName).Select
Row = 1
Col = 1
For Each Fld In RecSet.Fields
ActiveSheet.Cells(Row, Col).Value = Fld.Name
Col = Col + 1
Next
RecSet.MoveFirst
Row = Row + 1
Do While Not RecSet.EOF
Col = 1
For Each Fld In RecSet.Fields
ActiveSheet.Cells(Row, Col).Value = Fld
Col = Col + 1
Next
Row = Row + 1
RecSet.MoveNext
Loop
RecSet.Close
oConn.Close
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
我上网了解了EOF是什么,但我不知道它的原因是什么,当它是关于一个数据库,我可以毫无困难地使用同一个查询查询
对于记录,查询是:
mYsql = "select emp.name, emp.email, emp.off_duty, emp.jobtitle_id,
emp.jobtitle, mgr.name, mgr.email from staff.Staff emp " & _
"join staff.Staff mgr on emp.manager_staff_id = mgr.id where
emp.manager_staff_id in (" & List & ");"
在Workbench 6.3中运行就好了。啊,ODBC驱动程序测试也成功了。
非常感谢你,任何人都可以给我一个很好的暗示。我输了: - /
的Alessandro