【问题标题】:Overflow 6 error when returning recordset from function从函数返回记录集时溢出 6 错误
【发布时间】:2020-11-18 05:54:27
【问题描述】:

我的函数接受参数并执行 sql 查询,返回记录集,但返回时出错。

Public Function ExecuteParameters(sql As String, ParamArray Params() As Variant) As ADODB.Recordset
    Dim cmd As New ADODB.Command
    Dim inputParam As Variant
    cmd.ActiveConnection = Procs.getConn
    cmd.CommandText = sql

    For Each inputParam In Params
        Set inputParam = cmd.CreateParameter(, GetParameterType(inputParam), adParamInput, Len(Nz(inputParam, " ")), inputParam)
        cmd.Parameters.Append inputParam
    Next inputParam

    cmd.CommandType = adCmdText

    'errors out on this line
    Set ExecuteParameters = cmd.Execute()
End Function

此代码正常工作,直到从函数返回记录集的行,它错误输出为overflow。我从教程中获得了此代码,但无法弄清楚问题所在,因此感谢您的帮助。

从这里调用函数:

Public Function OnDelete()
    ExecuteParameters "DELETE * FROM ? WHERE ? = ?", "Students", "StudentID", 32
End Function

【问题讨论】:

  • 您能否更新您的问题以显示您如何调用此函数。另外,我建议验证参数。
  • @BrianMStafford 添加了代码

标签: vba adodb recordset


【解决方案1】:

为此苦苦挣扎了三天,终于有人指出,只能传递实际值作为参数,不能传递表名或列名。问题出在函数调用中,而不是我最初想的返回。

更新代码:

Public Function OnDelete()
    ExecuteParameters "DELETE * FROM Students WHERE StudentID = ?", 32
End Function

希望这可以节省我花费的时间...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2011-04-19
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多