【发布时间】:2020-12-29 22:02:09
【问题描述】:
关于这个问题:Avoid new line seperators in mySQL query within VBA code,我想执行一个SQL 语句,该语句写在 Excel 文件中的textbox 中。
因此,我创建了一个名为 SqlQuery1 的 textbox,如下所示:
在VBA中我指的是SqlString中的文本框:
Sub Get_Data_from_DWH ()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=XX.XXX.XXX.XX; DATABASE=bi; UID=testuser; PWD=test; OPTION=3"
conn.Open
SqlString = ThisWorkbook.Sheet1.Shapes("SqlQuery1").OLEFormat.Object.Text
Set rs = New ADODB.Recordset
rs.Open strSQL, conn, adOpenStatic
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
conn.Close
End Sub
但是,我在SqlString 上收到了runtime error 438。
您知道我需要进行哪些更改才能使其正常工作吗?
【问题讨论】:
-
将有问题的代码字符串分成不同的步骤。
SET wbk = ThisWorkbook: SET sh = wbk.Sheet1: SET shp = sh.Shapes("SqlQuery1"): SET of = shp.OLEFormat: SET obj = of.Object: SET SqlString = obj.Text- 什么语句失败了? -
'MySQL ODBC 5.1 Driver' 已经过时了。如果 MySQL 服务器是 5.6 或更高版本,请使用“MySQL ODBC 8.0 驱动程序”,因为 8.0.21 包含几个错误修复,例如参数。如果较旧的 MySQL Server 使用 5.3.14(支持 Server 4.1 到 5.7)