日期:2014-05-17  浏览次数:21121 次

为什么用do while not rs.eof就会报错“对象关闭时,不允许操作”
代码如下

<!--#include file="..\inc\conn.asp"-->
<!--#include file="..\inc\SessionCheck.asp"-->
<%
Call DBConnBegin()
dim tid,stuid,N,S,S2,S3,A,A2,A3,kaohe,kaohe2,kaohe3,markid
tid=trim((Session("DID")))
sSql="select * from MarkInfo where StuID='"+tid+"'"
oRs.open sSql,oConn,1,1

do while not oRs.eof /*就是这里报错ADODB.Recordset (0x800A0E78)对象关闭时,不允许操作。*/

oRs.movenext


markid=oRs("MarkID")
kaohe=oRs("Markdetal1")
kaohe2=oRs("Markdetal2")
kaohe3=oRs("Markdetal3")

oRs.close

sSql="select * from ExamineInfo where StuID='"+markid+"'"
oRs.open sSql,oConn,1,1
if oRs.eof and oRs.bof then
 oRs.close
 sSql="insert into ExamineInfo values('"&markid&"','"&kaohe&"','"&kaohe2&"','"&kaohe3&"','1')"
 oRs.open sSql,oConn,1,1
  else oRs.close
  sSql="select * from ExamineInfo where StuID='"+markid+"'"
  oRs.open sSql,oConn,1,1

………………
loop


如果我在前面加上 if ors.eof and ors.bof then 就不会报错,但是后面的语句都没有执行。
如果改在eles后,或者加if not (ors.eof and ors.bof)仍然会报错。希望大家指点下


------解决方案--------------------
oRs.close 这句不能在 Do Loop循环体内