+ -
当前位置:首页 → 问答吧 → for循环里用if出错,请教

for循环里用if出错,请教

时间:2011-12-05

来源:互联网

实际数据库操作是成功的,但总会报错 “BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。”,用注释进行测试,发现应该是for里if这一段出了问题(if就是为了最后一次循环ADO不执行movenext,但看错误好像还是执行了?),也换用do while的写法,错误依旧,请教原因,谢谢。
出错的一段:
  zbrs("person")=request.Form("zb"&i)
  if i < zb then
  zbrs.movenext
  end if
  Next

完整代码如下:
<%
Set zbrs=Server.CreateObject("ADODB.RecordSet")
zbsql="select * from zhiban"
zbrs.open zbsql,conn,1,3
zb=request.Form("zbi")
  For i=1 to zb
  zbrs.addnew
  Next
  zbrs.movefirst
  For i=1 to zb
  zbrs("person")=request.Form("zb"&i)
  if i < zb then
  zbrs.movenext
  end if
  Next
  zbrs.update
  zbrs.close
  set zbrs=nothing
  conn.close
  set conn=nothing
  %>

作者: WHISPERSKY   发布时间: 2011-12-05

<%
Set zbrs=Server.CreateObject("ADODB.RecordSet")
zbsql="select * from zhiban"
zbrs.open zbsql,conn,1,3
zb=request.Form("zbi")
For i=1 to zb
zbrs.addnew
zbrs("person")=request.Form("zb"&i)
Next
zbrs.update
zbrs.close
set zbrs=nothing
conn.close
set conn=nothing
  %>

作者: chinaskysun   发布时间: 2011-12-05

<%
Set zbrs=Server.CreateObject("ADODB.RecordSet")
zbsql="select * from zhiban"
zbrs.open zbsql,conn,1,3

for i=1 to request.Form("zbi").count

  zbrs.addnew
  zbrs("person")=request.Form("zb"&i)
  zbrs.update
  Next
  zbrs.close
  set zbrs=nothing
  %>

作者: andysonjhb   发布时间: 2011-12-05

谢谢楼上两位,两位的写法要好些,也能达到效果,但还是想弄懂我的写法报错的原因,谢谢

作者: WHISPERSKY   发布时间: 2011-12-05

是在使用zbrs之前,确保它是否有记录。
如使用movenext,如果到底了,就会出错。

作者: dogfish   发布时间: 2011-12-05

<%
Set zbrs=Server.CreateObject("ADODB.RecordSet")
zbsql="select * from zhiban"
zbrs.open zbsql,conn,1,3
zb=request.Form("zbi")
  For i=1 to zb
  zbrs.addnew
  Next
  zbrs.movefirst
  For i=1 to zb
  zbrs("person")=request.Form("zb"&i)
  if not zbrs.eof then
  zbrs.movenext
  end if
  Next
  zbrs.update
  zbrs.close
  set zbrs=nothing
  conn.close
  set conn=nothing
  %>

作者: yousite1   发布时间: 2011-12-05

引用 4 楼 dogfish 的回复:
是在使用zbrs之前,确保它是否有记录。
如使用movenext,如果到底了,就会出错。

就是为了防止这种情况,才用if在最后一次循环不执行movenext,但好像没生效,
  if i < zb then
  zbrs.movenext
  end if
难道i < zb没有得出true?但是vbscript不是只有一种数据类型的?

作者: WHISPERSKY   发布时间: 2011-12-05

引用 5 楼 yousite1 的回复:
<%
Set zbrs=Server.CreateObject("ADODB.RecordSet")
zbsql="select * from zhiban"
zbrs.open zbsql,conn,1,3
zb=request.Form("zbi")
For i=1 to zb
zbrs.addnew
Next
zbrs.movefirst
For i=1……

eof我试过,同样报错,就是奇怪为什么if没生效,但说没生效,最后一次循环之前的循环又是有效的(执行了movenext)

作者: WHISPERSKY   发布时间: 2011-12-05