【发布时间】:2015-07-08 19:18:32
【问题描述】:
我正在尝试使用 Excel 宏在 MySQL 数据库中选择行。连接似乎工作正常,但出现 VBA 3001 错误
(Microsoft Visual Basic 3001 参数类型错误,或超出可接受范围,或相互冲突)
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim oConn As ADODB.Connection
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 5.2 Unicode Driver};" & _
"SERVER=localhost;" & _
"DATABASE=talar;" & _
"USER=root;" & _
"PASSWORD=root;" & _
"Option=3"
strSQL = "SELECT * FROM ots where Estado in (2,3)"
rs.Open SQLStr, Cn, adOpenForwardOnly, adLockReadOnly
Dim myArray()
myArray = rs.GetRows()
oConn.Close
已安装 MySQL ODBC 5.2 Unicode 驱动程序,MySQL 服务运行良好,我使用 Excel 2010,Windows 7。有人知道吗?谢谢!
【问题讨论】:
-
SQL 设置为“strSQL”处的变量,看起来 rs.Open 正在使用变量“SQLStr”
-
我在 VBA 中使用的技术总是将变量设为大写/斑马大小写,并始终输入小写...如果您没有看到 VBA 自动更正它,您就知道您输入了错了。
-
另外 - 使用
Option Explicit- 这正是它的用途...... -
我在 Excel ide 上执行此操作,不是那么用户友好!谢谢蒂姆。
-
人们认为 VBA 编辑器的 灵活性 是理所当然的...... 10 个新手编码器中至少有 7 个错过了 Option Explicit 并陷入了不必要的破坏!建议放弃过去用于弱类型 C 语言的 匈牙利符号(数据类型前缀)。遵循选项显式并在变量声明上保持一致,并在创建它们时牢记它们的目的。当整数或字节可以完成这项工作时,为什么要使用 large 变体?