【发布时间】:2018-02-06 20:25:23
【问题描述】:
提前谢谢你。我正在尝试从接受输入参数的 excel 运行存储过程,它给出了错误运行时错误“-2147217900 (80040e14)”自动化错误。
Set cmd1 = New ADODB.Command
With cmd1
.ActiveConnection = sConnString
.CommandText = "spGetPriceChangeTest"
.CommandType = adCmdStoredProc
.CommandTimeout = 360
.Parameters.Append .CreateParameter("@suppliercode", adVariant, adParamInput, , Range("A" & (x + 2)).Value)
.Parameters.Append .CreateParameter("@date1", adDBTimeStamp, adParamInput, , datetime)
.Parameters.Append .CreateParameter("@proddescription", adVariant, adParamInput, , Range("D" & (x + 1)).Value)
.Parameters.Append .CreateParameter("@vendorcode", adVariant, adParamInput, , Range("C" & (x + 2)).Value)
.Parameters.Append .CreateParameter("@type", adVariant, adParamInput, , Range("B" & (x + 2)).Value)
End With
Set rst1 = New ADODB.Recordset
Set rst1 = cmd1.Execute
【问题讨论】:
-
你在
Set-ing 两次完全相同的对象引用:Set rst1 = New ADODB.Recordset是多余的,可以删除。 -
某处没有实际打开的连接吗?哪个特定行抛出错误?
-
删除了它。同样的错误。
-
我知道,我只是说这是多余的。您在任何地方都有
.Open的ADODB.Connection对象吗?我从来没有在没有明确的ADODB.Connection的情况下使用ADODB.Recordset...也尝试从参数名称中删除@,并确保以与SP 期望的完全相同的顺序提供参数。 -
你将不得不更加努力地尝试......所以是问答,而不是“握住我的手直到它起作用”;-)
标签: vba excel stored-procedures input-parameters