2014-09-11 59 views
1

尝试向参数添加参数时,我尝试了很多很多事情,但一直收到错误3001(参数的类型错误,超出了可接受的范围,或者与另一个冲突)命令对象。VBScript中的ADO参数错误

Set cmd = CreateObject("ADODB.Command") 
cmd.ActiveConnection = con 
cmd.CommandText = "ProcName"     
cmd.CommandType = 4 'adCmdStoredProc 

MsgBox("0") 
'cmd.Parameters.Append(cmd.CreateParameter("@InvoiceNumber", adVarChar, adParamInput, 100, sInvoice)) 
Set pInvoiceNumber = cmd.CreateParameter("@InvoiceNumber", adVarChar, adParamInput, 100, sInvoice) 
cmd.Parameters.Append(pInvoiceNumber) 

连接对象在此代码运行时有效并打开。存储过程的@InvoiceNumber参数是一个varchar(100)。我在这里错过了什么?

+0

的Oracle认证专家的建议更具体地讲,在'设置pInvoiceNumber = ...'行发生错误。 – 2014-09-11 02:14:01

+0

'Set cmd.ActiveConnection = con'? – 2014-09-11 07:31:20

+0

@oraclecertifiedprofessional是的。正如我所提到的那样,这是一个有效且开放的连接对象。这不是正确的做法吗? – 2014-09-11 12:41:30

回答

2

我无法复制该问题,但我正在使用经典ASP。我发现这篇文章听起来像它可能是相关的,但。

VBA: Run-time error 3001 Arguments Are Of The Wrong Type... when setting ADODB.Command object members

看来adVarChar和adParamInput常数可能是问题,由于后期绑定。解决方案是将常量添加到Sub标题。

如果这不可行,请尝试使用刷新

Set cmd = CreateObject("ADODB.Command") 
cmd.ActiveConnection = con 
cmd.CommandText = "ProcName"     
cmd.CommandType = 4 'adCmdStoredProc 
cmd.Parameters.Refresh 
cmd.Parameters(0).Value = sInvoice 
+0

你的链接的解决方案是什么。尽管我也使用了@oraclecertifiedprofessional建议的“Set cmd.ActiveConnection”。 – 2014-09-11 22:33:31