错误3001 vba Excel宏MySQL插入

时间:2015-06-25 15:16:22

标签: mysql excel vba

我试图使用Excel宏在mysql数据库中插入一行。连接似乎工作正常,但我得到一个vba 3001错误

(Microsoft visual basic 3001参数类型错误,或者超出可接受的范围,或者彼此冲突)

当y执行此代码时:

        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        ConnectDB           
       'strSQL = "INSERT INTO talar.ots (UbicacionTecnica, Equipo, Posmant) VALUES ('sdasd', 'sdasd','sdasd')"

        rs.Open strSQL, oConn, adOpenDynamic, adLockOptimistic

我已经阅读并尝试了50个教程和本页其他帖子中的不同内容,所有结果都不好......

这是连接的代码:

    Private Sub ConnectDB()
    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"
     End Sub
安装MySQL ODBC 5.2 Unicode驱动程序,mysql服务运行正常,我使用Excel 2010,Windows 7.我不知道这些信息是否足够。 有谁有任何想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

oConn local ConnectDB sub,因此您不会向记录集Open传递任何内容。

Option Explicit添加到代码文件的顶部,以便在执行此类操作时收到警告。

创建一个返回连接的函数:

Private Function ConnectDB() As ADODB.Connection
    Set ConnectDB = New ADODB.Connection
    ConnectDB.Open "DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;DATABASE=talar;USER=root;PASSWORD=root;Option=3"
End Function

然后

dim cn as ADODB.Connection
set cn = ConnectDB()           

cn.Execute "INSERT INTO talar.ots (UbicacionTecnica, Equipo, Posmant) VALUES ('sdasd', 'sdasd','sdasd')"

cn.Close

插入时不需要Recordset,因为不会返回任何行。

如果确实需要,Recordset adOpenForwardOnly, adLockReadOnly优于adOpenDynamic, adLockOptimistic,除非您特别需要后者提供的功能。