错误3001 VBA ExcelmacrosMySQL插入
我试图使用Excelmacros在MySQL数据库中插入一行。 连接似乎工作正常,但我得到一个vba 3001错误
(Microsoft Visual Basic 3001参数的types错误,或者超出了可接受的范围,或者相互冲突)
当你执行这个代码时:
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个教程和其他post,所有不好的结果….
这是连接的代码:
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的。我不知道这个信息是否足够。 任何人有任何想法? 谢谢!
oConn
对于ConnectDB
子系统是本地的 ,所以你没有向logging集Open
传递任何东西。
将Option Explicit
添加到代码文件的顶部,以便在执行此类操作时收到警告。
创build一个返回连接的函数:
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
更好adOpenDynamic, adLockOptimistic
除非你特别需要后者提供的function。