我试图使用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.我不知道这些信息是否足够。
有谁有任何想法?
谢谢!
答案 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
,除非您特别需要后者提供的功能。