【问题标题】:Error 3001 Excel VBA MySQL Select错误 3001 Excel VBA MySQL 选择
【发布时间】: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 变体?

标签: mysql vba excel


【解决方案1】:

您实际上遇到了两个问题,您使用Option Explicit 时会更容易发现这两个问题。

两者都在这一行:

rs.Open SQLStr, Cn, adOpenForwardOnly, adLockReadOnly

您的 SQL 字符串变量是 strSQL,而您的连接对象是 oConn。所以将代码行改为:

rs.Open strSQL, oConn, adOpenForwardOnly, adLockReadOnly

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多