日期:2014-05-18  浏览次数:20501 次

关于VB调用存储过程的参数传递问题
在列程序段执行成功过,但在另一应用程序过不了。
Dim   adoconn   As   New   ADODB.Connection
Dim   adocomm   As   New   ADODB.Command
adoconn.ConnectionString   =   PublicStr
adoconn.Open
Set   adocomm.ActiveConnection   =   adoconn
adocomm.CommandText   =   ProcStr
adocomm.CommandType   =   adCmdStoredProc
adocomm.Parameters(1)   =   "1 "
adocomm.Parameters(2)   =   "OutputParameters "
adocomm.Execute
执行到
adocomm.Parameters(1)   =   "1 "
报错:在对应所需名称或参数的集合中,未找到项目。

若用:
Dim   ADOPrm   As   New   ADODB.Parameter
Set   ADOPrm   =   ADOCmd.CreateParameter(sParmName,   adInteger,   adParamOutput)
ADOCmd.Parameters.Append   ADOPrm
可以。
但因调用的执行程序是公共模块,对调用的程序过程参数是不定,且数据类型也不同,请问能有什么好的处理办法?

------解决方案--------------------
Dim adoconn As New ADODB.Connection
Dim adocomm As New ADODB.Command
adoconn.ConnectionString = PublicStr
adoconn.Open
Set adocomm.ActiveConnection = adoconn
adocomm.CommandText = ProcStr
adocomm.CommandType = adCmdStoredProc
adocomm.Parameters.Refresh ' '** 加上这句,自动取参数,这样后面的参数引用才生效
adocomm.Parameters(1) = "1 "
adocomm.Parameters(2) = "OutputParameters "
adocomm.Execute