1

我正在尝试在 calligng 代码中创建我的 ADODB 命令和参数,以便可以将它们传递给通用 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

谁能告诉我如何实现这一目标?

4

1 回答 1

3

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

于 2012-11-30T15:40:41.057 回答