我正在尝试在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.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
有人可以告诉我如何实现这个目标吗?
答案 0 :(得分:2)
在
ParameterList(0) = prm
ParameterList(0)
为Empty
,以解决此问题;
set ParameterList(0) = prm
我也会强烈地输入,而不是变体使用Dim ParameterList(0) As ADODB.Parameter
您看到的错误是因为您在调用SQLFunc
之前已将参数附加到命令中,而您再次尝试非法尝试这样做。绑定到命令时,参数名称必须是唯一的。
您可以删除绑定并使用;
Set prm = cmd.CreateParameter("@Field", adVarChar, adParamInput, 50)
prm.Value = Value
然后prm
仍然独立于cmd
。