【发布时间】:2013-04-03 20:01:58
【问题描述】:
最近我们收到了这个错误: ADODB.Field 错误'80020009'
BOF 或 EOF 为 True,或者当前记录已被删除。请求的操作需要当前记录。
/PHET/mscripts/TestScoring.asp, line 52
此特定文件用于 10 个其他测试,并且不会出错。我检查了数据库,一切看起来都很好。这是引发错误的实际页面...
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="DoSecure.asp" -->
<!--#include virtual="/lib/dbConnModules.asp" -->
<%
Dim rsAnswer__MMColParam
rsAnswer__MMColParam = Session("ModuleID")
Set rsAnswer = Server.CreateObject("ADODB.Recordset")
rsStrAnswer = "SELECT * FROM TestAnswers WHERE TestName = '" & Request.Form("testName") & "' and ApplicationID = '" & Session("ApplicationID") & "' and moduleID = '" + Replace(rsAnswer__MMColParam, "'", "''") + "'"
rsAnswer.open rsStrAnswer, dbConnModules
answerArray = array(rsAnswer("AnswerQ1"), rsAnswer("AnswerQ2"), rsAnswer("AnswerQ3"), rsAnswer("AnswerQ4"), rsAnswer("AnswerQ5"), rsAnswer("AnswerQ6"), rsAnswer("AnswerQ7"), rsAnswer("AnswerQ8"), rsAnswer("AnswerQ9"), rsAnswer("AnswerQ10"), rsAnswer("AnswerQ11"), rsAnswer("AnswerQ12"), rsAnswer("AnswerQ13"), rsAnswer("AnswerQ14"), rsAnswer("AnswerQ15"), rsAnswer("AnswerQ16"), rsAnswer("AnswerQ17"), rsAnswer("AnswerQ18"), rsAnswer("AnswerQ19"), rsAnswer("AnswerQ20"))
testArray = array(Request.Form("Q1"), Request.Form("Q2"), Request.Form("Q3"), Request.Form("Q4"), Request.Form("Q5"), Request.Form("Q6"), Request.Form("Q7"), Request.Form("Q8"), Request.Form("Q9"), Request.Form("Q10"), Request.Form("Q11"), Request.Form("Q12"), Request.Form("Q13"), Request.Form("Q14"), Request.Form("Q15"), Request.Form("Q16"), Request.Form("Q17"), Request.Form("Q18"), Request.Form("Q19"), Request.Form("Q20"))
if not rsAnswer.EOF then
myCorrect = 0
For i=0 To (rsAnswer("NumOfQs") - 1)
'Response.Write(i+1 & Request.Form("q" & i+1) & "<br />")
If isNull(answerArray(i)) then answerArray(i) = "" End If
If answerArray(i) = testArray(i) Then
myCorrect = myCorrect + 1
End if
Next
'Response.Write(myCorrect)
end if
'Response.Write(myCorrect)
%>
<%
strTestRecord = "insert into TestRecords (ApplicationID, ModuleID, TestName, UserEmail, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Debugger, numberCorrect) values ('" &_
Session("ApplicationID") & "', '"&_
Session("ModuleID") & "', '"&_
Replace(Request.Form("testName"), "'", "''") & "', '"&_
Session("UserEmailAddr") & "', '"&_
Replace(Request.Form("Q1"), "'", "''") & "', '" &_
Replace(Request.Form("Q2"), "'", "''") & "', '" &_
Replace(Request.Form("Q3"), "'", "''") & "', '" &_
Replace(Request.Form("Q4"), "'", "''") & "', '" &_
Replace(Request.Form("Q5"), "'", "''") & "', '" &_
Replace(Request.Form("Q6"), "'", "''") & "', '" &_
Replace(Request.Form("Q7"), "'", "''") & "', '" &_
Replace(Request.Form("Q8"), "'", "''") & "', '" &_
Replace(Request.Form("Q9"), "'", "''") & "', '" &_
Replace(Request.Form("Q10"), "'", "''") & "', '" &_
Replace(Request.Form("Q11"), "'", "''") & "', '" &_
Replace(Request.Form("Q12"), "'", "''") & "', '" &_
Replace(Request.Form("Q13"), "'", "''") & "', '" &_
Replace(Request.Form("Q14"), "'", "''") & "', '" &_
Replace(Request.Form("Q15"), "'", "''") & "', '" &_
Replace(Request.Form("Q16"), "'", "''") & "', '" &_
Replace(Request.Form("Q17"), "'", "''") & "', '" &_
Replace(Request.Form("Q18"), "'", "''") & "', '" &_
Replace(Request.Form("Q19"), "'", "''") & "', '" &_
Replace(Request.Form("Q20"), "'", "''") & "', '" &_
Request.Form("Debugger") & "', " & myCorrect & ")"
Session("NumOfQs") = rsAnswer("NumOfQs")
Session("NumToPass") = rsAnswer("NumToPass")
Session("YourScore") = myCorrect
if myCorrect > Session("NumToPass") then pf = "pass" else pf = "fail" end if ' PASS OR FAIL
strTestRecordComplete = "insert into CheckRequirements (ApplicationID, UserEmail, ModuleID, RequirementName, PassOrFail, OperationalIPAddr) values ('" & Session("ApplicationID") & "', '" & Session("UserEmailAddr") & "', '" & Session("ModuleID") & "', '"& Request.Form("testName") & "', '" & pf & "', '" & Request.ServerVariables("REMOTE_ADDR") & "')"
dbConnModules.Execute(strTestRecord)
dbConnModules.Execute(strTestRecordComplete)
if Request.Form("TestName") = "pretest" Then
Response.Redirect("../" & Session("ModuleDir") & "/TestResults.asp?fr=pre&desturl="& Request.Form("desturl"))
elseif Request.Form("TestName") = "posttest" Then
Session("rsYourAnswers") = testArray
Response.Redirect("../" & Session("ModuleDir") & "/TestResults.asp?fr=post&desturl="& Request.Form("desturl"))
End If
%>
<%
rsAnswer.Close()
Set rsAnswer = Nothing
%>
<!--#include virtual="/lib/dbConnModulesClose.asp" -->
有什么想法吗?谢谢。
【问题讨论】:
-
这是代码中某处的逻辑错误,需要重现和调试。除非我在您的代码中遗漏了一些非常明显的东西,否则这个问题将不适合您在 SO 上获得的那种帮助。我确实希望有人能帮助你,但我认为那是帽子。我想我可以说显而易见的并说错误意味着您正在尝试访问记录集中不存在的行。我在关闭或空的记录集上看到了这个错误。
-
那么第 52 行是哪一行?
标签: asp-classic