用ADO调用带参数的VBA存储过程
我正在尝试使用ADO在VBA中使用两个参数调用SQL Server存储过程;但是,我收到了错误消息“运行时错误'13'类型不匹配”。我花了几个小时在网上搜索,但就是不能让它工作。。。 这是我的密码:用ADO调用带参数的VBA存储过程,vba,stored-procedures,ado,Vba,Stored Procedures,Ado,我正在尝试使用ADO在VBA中使用两个参数调用SQL Server存储过程;但是,我收到了错误消息“运行时错误'13'类型不匹配”。我花了几个小时在网上搜索,但就是不能让它工作。。。 这是我的密码: Dim cnn As New ADODB.Connection Dim cmd As New ADODB.Command cnn.ConnectionString = "Provider=SQLNCLI11;" _ & "Server=(Local);"
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=SQLNCLI11;" _
& "Server=(Local);" _
& "Database=Inventory;" _
& "Integrated Security=SSPI;" _
& "DataTypeCompatibility=80;"
cnn.Open
With cmd
.ActiveConnection = cnn
.CommandType = "adCmdText"
.CommandText = "usp_mySP"
.Parameters.Append .CreateParameter("@fileName1", adChar, adParamInput, , File1.Name)
.Parameters.Append .CreateParameter("@fileName2", adChar, adParamInput, , File2.Name)
.Execute
End With
File1.Name
和File2.Name
是我使用FileSystemObject获得的两个最新修改文件的名称
usp_mySP
是我的存储过程,它基本上使用bcp命令导出制表符分隔的文件。它在SQLServer中工作得非常好
有什么建议或意见吗?经过几个小时的反复试验,我终于让代码正常工作了。感谢@Mat's指出将
adChar
更改为adVarChar
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=SQLNCLI11;" _
& "Server=(Local);" _
& "Database=Inventory;" _
& "Integrated Security=SSPI;" _
& "DataTypeCompatibility=80;"
cnn.Open
With cmd
.ActiveConnection = cnn
.CommandType = adCmdStoredProc
.CommandText = "usp_mySP"
.Parameters.Append .CreateParameter("@fileName1", adVarChar, adParamInput, 50, File1.Name)
.Parameters.Append .CreateParameter("@fileName2", adVarChar, adParamInput, 50, File2.Name)
.Execute
End With
MsgBox"Thank God! Finally it's working!"
cnn.Close
您是否尝试过从参数名称中删除
@
字符<代码>adVarChar?另外,没有直接关系,但您肯定不想将这些对象声明为新的@Mat's我想我知道为什么,我不应该在adCmdText
周围添加引号哦,对了。这是一个枚举。