经典ASP错误:关闭对象时不允许进行操作

问题描述 投票:-1回答:4

我已经从其他一些对此问题的回答中找到并实现了代码,但是我仍然没有运气。我仍然收到错误消息。

    If ((bReport And bIsDate And CheckPermissions("lotsales")) Or Request.QueryString("report")) Then
    OpenDB
    Dim oRs, sSQL, sSQL2, iCancellations, iSales, sDate, sInitDate, sEndDate, iPhaseID, iPhaseNumber, rowCount

    sInitDate = Request("startDate")
    sEndDate = Request("endDate")
    sSQL = "sp_get_lot_sales_test '" & sInitDate & "', '" & sEndDate & "', " & sPhase & ", '" & sReportView & "'"

    'response.write vbNewLine & "<!-- sql: " & sSQL & "-->" & vbNewLine
    'response.write sSQL
    'response.Flush
    Set oRs = ExecuteCommand(sSQL,1) 
End If

然后这是发生错误的地方-

If (oRs.EOF) Then <-- fails here
       Response.Write("<TR><TD ALIGN=""center"">There is no data to report on!</TD></TR>")
    Else
        Do While Not oRs.EOF

作为最后的选择,我将返回存储过程并对其进行解构,以确保所有操作都正确无误。有谁对我为什么会得到错误有任何见解?我不会在任何地方发出关闭通知。

这里是ExecuteCommand函数-

Function ExecuteCommand(s,i)
    On Error Resume Next
    Set ExecuteCommand = oDBc.Execute(s, , i)
End Function
asp-classic vbscript adodb
4个回答
0
投票

您需要一个连接对象。

set conn = server.CreateObject("adodb.connection")
set oRs = conn.execute(sSql)

13
投票

这可能很旧,但是我经常遇到该错误(关闭对象时不允许进行操作。)>

我要做的是在存储过程中,我添加了以下内容:

SET NOCOUNT ON

SET ANSI_WARNINGS OFF

在过程中AS

的正下方。

这就是我要做的,问题就消失了。


3
投票

我正在为客户端维护一些旧的Classic ASP代码,这些代码是我们从以前的开发人员那里接手的,这个错误使我疯狂了4个小时。


0
投票

尽管已经有多年历史了,但我们仍然在这里寻找解决方案。对我来说,此错误的原因是用户对存储过程没有执行权限。授予执行权限解决了该错误。

© www.soinside.com 2019 - 2024. All rights reserved.