我已经从其他一些对此问题的回答中找到并实现了代码,但是我仍然没有运气。我仍然收到错误消息。
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
您需要一个连接对象。
set conn = server.CreateObject("adodb.connection")
set oRs = conn.execute(sSql)
这可能很旧,但是我经常遇到该错误(关闭对象时不允许进行操作。)>
我要做的是在存储过程中,我添加了以下内容:
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
在过程中AS
的正下方。这就是我要做的,问题就消失了。
我正在为客户端维护一些旧的Classic ASP代码,这些代码是我们从以前的开发人员那里接手的,这个错误使我疯狂了4个小时。
尽管已经有多年历史了,但我们仍然在这里寻找解决方案。对我来说,此错误的原因是用户对存储过程没有执行权限。授予执行权限解决了该错误。