传递一个ADODB参数数组来运行?

时间:2012-11-30 14:43:20

标签: 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.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

有人可以告诉我如何实现这个目标吗?

1 个答案:

答案 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