Excel VBA触发的查询中出现意外的EOF

时间:2017-06-27 17:17:53

标签: mysql excel vba excel-vba odbc

我正在尝试重用在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

0 个答案:

没有答案