VBA 使用 ADO 调用带参数的存储过程
VBA Call Stored Procedure with Parameters Using ADO
我正在尝试使用 ADO 在 VBA 中调用带有两个参数的 SQL 服务器存储过程;但是我收到错误消息 "Run-time error '13' Type mismatch"。我花了几个小时在网上搜索,但就是无法正常工作......
这是我的代码:
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 命令导出制表符分隔的文件。它在 SQL 服务器中工作得很好。
有什么建议或意见吗?
又经过几个小时的反复试验,我终于让代码工作了。并感谢@Mat 指出将 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
我正在尝试使用 ADO 在 VBA 中调用带有两个参数的 SQL 服务器存储过程;但是我收到错误消息 "Run-time error '13' Type mismatch"。我花了几个小时在网上搜索,但就是无法正常工作...... 这是我的代码:
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 命令导出制表符分隔的文件。它在 SQL 服务器中工作得很好。
有什么建议或意见吗?
又经过几个小时的反复试验,我终于让代码工作了。并感谢@Mat 指出将 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