Vba 将ADODB参数数组传递给函数?
我试图在calligng代码中创建ADODBcommand和参数,以便将它们传递到通用SQL函数中,但从列表中检索参数时出错:Vba 将ADODB参数数组传递给函数?,vba,Vba,我试图在calligng代码中创建ADODBcommand和参数,以便将它们传递到通用SQL函数中,但从列表中检索参数时出错: Dim prm As ADODB.Parameter Dim cmd As ADODB.Command Dim ParameterList(0) As Variant Value = Cells(3,3).Value Set cmd = New ADODB.Command Set prm = cmd.CreatePar
Dim prm As ADODB.Parameter
Dim cmd As ADODB.Command
Dim ParameterList(0) As Variant
Value = Cells(3,3).Value
Set cmd = New ADODB.Command
Set prm = cmd.CreateParameter("@Field", adVarChar, adParamInput, 50)
cmd.Parameters.Append prm
cmd.Parameters("@Field").Value = Value
ParameterList(0) = prm
Call SQLFunc(Data, SQLStr, adCmdStoredProc, cmd, ParameterList)
.
.
sub SQLFunc(ByRef Data as Variant, SQLStr as String, CommandType As ADODB.CommandTypeEnum, ByRef cmd As ADODB.Command, ParamList As Variant)
.
.
.
If cmd.CommandType <> adCmdStoredProc Then
cmd.Execute
Else
'Append the parameters
For i = LBound(ParamList, 1) To UBound(ParamList, 1)
Dim TempParam As ADODB.Parameter
Set TempParam = ParamList(i)
cmd.Parameters.Append TempParam 'Error here
Next
Set Rst = cmd.Execute
Dim prm作为ADODB.参数
Dim cmd作为ADODB.Command
变光参数列表(0)作为变量
值=单元格(3,3)。值
Set cmd=New ADODB.Command
设置prm=cmd.CreateParameter(“@Field”,adVarChar,adParamInput,50)
cmd.Parameters.Append prm
cmd.Parameters(“@Field”).Value=Value
参数列表(0)=prm
调用SQLFunc(数据、SQLStr、adCmdStoredProc、cmd、参数列表)
.
.
子SQLFunc(ByRef数据作为变量,SQLStr作为字符串,CommandType作为ADODB.CommandTypeEnum,ByRef cmd作为ADODB.Command,ParamList作为变量)
.
.
.
如果cmd.CommandType adCmdStoredProc,则
cmd.Execute
其他的
'附加参数
对于i=LBound(ParamList,1)到UBound(ParamList,1)
Dim TempParam作为ADODB.参数
设置TempParam=ParamList(i)
cmd.Parameters.Append TempParam'错误
下一个
设置Rst=cmd.Execute
有谁能告诉我如何做到这一点吗?之后
ParameterList(0) = prm
参数列表(0)
为空
,以解决此问题
set ParameterList(0) = prm
我也会强烈地键入它,而不是使用变量Dim ParameterList(0)作为ADODB.Parameter
出现您看到的错误是因为您在调用SQLFunc
之前已将参数附加到命令中,在该命令中您非法再次尝试这样做。绑定到命令时,参数名称必须唯一
您可以删除绑定并使用
Set prm = cmd.CreateParameter("@Field", adVarChar, adParamInput, 50)
prm.Value = Value
然后,prm
保持独立于cmd