VBA使用ADO调用带参数的存储过程

时间:2017-04-13 20:32:01

标签: 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);" _
                 & "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.NameFile2.Name是我使用FileSystemObject获得的两个最新修改文件的名称。

usp_mySP是我的存储过程,它实质上使用bcp命令导出制表符分隔文件。它在SQL Sever中完美运行。

有任何建议或意见吗?

1 个答案:

答案 0 :(得分:1)

经过几个小时的反复试验,我终于得到了代码。并感谢@ 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
相关问题