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

onimenokyo1983 2012-03-21 11:06:33
代码如下

<!--#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)仍然会报错。希望大家指点下
...全文
328 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
onimenokyo1983 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxl888 的回复:]

很显然,可能是你的数据库连接有问题,也可能是根本没有记录!
[/Quote]
数据库没问题,我想应该是之前打开的数据库因为已经close了,loop跳转回来的时候,只是从do while开始执行,并没有执行之前的open,所以会报对象关闭。等我下午自己验证下
晨晨 2012-03-21
  • 打赏
  • 举报
回复
很显然,可能是你的数据库连接有问题,也可能是根本没有记录!
onimenokyo1983 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hookee 的回复:]

oRs.close 这句不能在 Do Loop循环体内
[/Quote]

嗯,是的,就是这个问题。但是因为第一条的数据需要一直打开,所以新建一个ors2,且在loop外关闭就解决了
hookee 2012-03-21
  • 打赏
  • 举报
回复
oRs.close 这句不能在 Do Loop循环体内

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧