ASP问题:麻烦高手给看看这段代码哪错了,怎么报错呢?
<%setcom=server.createobject("adodb.connection")com.open"driver={microsoftaccessdrive...
<%
set com=server.createobject("adodb.connection")
com.open "driver={microsoft access driver (*.mdb)};DBQ="&Server.MapPath("!@#data.mdb")
set rs=server.createobject("adodb.recordset")
sql="select * from student order by id asc"
rs.open sql,com,1,1
allstudent=rs.recordcount
if allstudent>0 then
for i=1 to allstudent
name=rs("name")
set rs=server.createobject("adodb.recordset")
sql="select * from test where name='"&name&"'"
rs.open sql,com,1,1
alltest=rs.recordcount
if alltest>1 then
for i=1 to alltest-1
set rs=server.CreateObject("adodb.recordset")
sql="select * from test where where name='"&name&"' order by fenshu asc"
rs.open sql,com,1,3
rs.delete
rs.update
rs.movenext
next
end if
rs.movenext
next
end if
response.redirect ("close.ASP")
%>
以上代码是为了把所有学生的考试成绩只留下最高分的一个记录,其余的都删掉。
所以,我先查询学生名单表,找到一个就循环,在测试成绩表中查找这个学生的所有成绩,只留下一个最高分的成绩记录,其余删掉。
所以我用了嵌套循环,我感觉理论上很通,就是调试的时候报错,麻烦有懂局的给看看是哪写错了 展开
set com=server.createobject("adodb.connection")
com.open "driver={microsoft access driver (*.mdb)};DBQ="&Server.MapPath("!@#data.mdb")
set rs=server.createobject("adodb.recordset")
sql="select * from student order by id asc"
rs.open sql,com,1,1
allstudent=rs.recordcount
if allstudent>0 then
for i=1 to allstudent
name=rs("name")
set rs=server.createobject("adodb.recordset")
sql="select * from test where name='"&name&"'"
rs.open sql,com,1,1
alltest=rs.recordcount
if alltest>1 then
for i=1 to alltest-1
set rs=server.CreateObject("adodb.recordset")
sql="select * from test where where name='"&name&"' order by fenshu asc"
rs.open sql,com,1,3
rs.delete
rs.update
rs.movenext
next
end if
rs.movenext
next
end if
response.redirect ("close.ASP")
%>
以上代码是为了把所有学生的考试成绩只留下最高分的一个记录,其余的都删掉。
所以,我先查询学生名单表,找到一个就循环,在测试成绩表中查找这个学生的所有成绩,只留下一个最高分的成绩记录,其余删掉。
所以我用了嵌套循环,我感觉理论上很通,就是调试的时候报错,麻烦有懂局的给看看是哪写错了 展开
1个回答
展开全部
理论上是行得通的!但是我想问一下的是,如果rs是一个数据连接,再用数据连接时是否要换一个名字?内层与外层都是一个结果信集,那么你内层的结果集理论上会不是改变外层的结果集?
一个rs满天飞,还要在循环,还要嵌套,已经将你的代码直接给OVER了!
顺便问一下,为什么不使用SQL谓语?这么喜欢用循环?难道每个结果集在取值是不需要时间或是运算吗?如果是any等谓词能满足你的要求时,你还要用循环吗?在我这里循环的代码似乎太大!
如果一句SQL能满足你的要求时,你会不会重新去看一下SQL方面的书呢?
我的理解是你的所有学生经过了多次考试,每一次的成绩都记录了!现在要保留的是你的每一个学生的最高成绩做为最终成绩.这样理解对吗?
这样其实一句就可以查询到所以学生的最终成绩的,当然我指提最终成绩是每一个学生的最高成绩.如果你要删除其他的信息,用一个not in就完全可以了!
你的学生如果有50个,用循环的方式,怕是很难运行的,会超时的,我想!因为先找到该学生的最高成绩,其他用max集合或是> any谓词就可以了,何须再求呢,一个一个的,顶上手工操作了!
一个rs满天飞,还要在循环,还要嵌套,已经将你的代码直接给OVER了!
顺便问一下,为什么不使用SQL谓语?这么喜欢用循环?难道每个结果集在取值是不需要时间或是运算吗?如果是any等谓词能满足你的要求时,你还要用循环吗?在我这里循环的代码似乎太大!
如果一句SQL能满足你的要求时,你会不会重新去看一下SQL方面的书呢?
我的理解是你的所有学生经过了多次考试,每一次的成绩都记录了!现在要保留的是你的每一个学生的最高成绩做为最终成绩.这样理解对吗?
这样其实一句就可以查询到所以学生的最终成绩的,当然我指提最终成绩是每一个学生的最高成绩.如果你要删除其他的信息,用一个not in就完全可以了!
你的学生如果有50个,用循环的方式,怕是很难运行的,会超时的,我想!因为先找到该学生的最高成绩,其他用max集合或是> any谓词就可以了,何须再求呢,一个一个的,顶上手工操作了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询