For循环中嵌套If循环的问题

stephen0403 2009-08-06 02:57:27
为了实现功能,写了如下ASP代码,但是有错误,望各位能帮助解决错误。谢谢了。



<%
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from ResultTemp"
rs.Open sql,conn,1,3
//循环查询删除

for i = 1 to rs.recordcount
set ss1=Server.CreateObject("ADODB.RecordSet")
ss="select * from ResultTemp inner join table1 on ResultTemp.customerid=table1.customerid where ResultTemp.id=i and table1.expdate > ResultTemp.expdate"
ss1.Open ss,conn,1,3
if ss1.recordcount>0 Then
set sc1=Server.CreateObject("ADODB.RecordSet")
sc="delete from ResultTemp where id=i"
sc1.Open sc,conn,1,3
Next
else
set ss2=Server.CreateObject("ADODB.RecordSet")
ss="select * from ResultTemp inner join table2 on ResultTemp.customerid=table2.customerid where ResultTemp.id=i and table2.expdate > ResultTemp.expdate"
ss2.Open ss,conn,1,3
if ss.recordcount>0 Then
set sc2=Server.CreateObject("ADODB.RecordSet")
sc="delete from ResultTemp where id=i"
sc2.Open sc,conn,1,3
Next
else
set ss3=Server.CreateObject("ADODB.RecordSet")
ss="select * from ResultTemp inner join table3 on ResultTemp.customerid=table3.customerid where ResultTemp.id=i and table3.expdata > ResultTemp.expdate"
ss3.Open ss,conn,1,3
if ss3.recordcount>0 Then
set sc3=Server.CreateObject("ADODB.RecordSet")
sc="delete from ResultTemp where id=i"
sc3.Open sc,conn,1,3
End if
End if
End if
Next
%>




想达到的目的,在For循环中,进行第一个查询,查询结果数大于0时,i+1,进行第二次For循环;查询结果数等于0时,进行第二个查询,一直到第三个查询,查询结果数都等于0时,i+1,进行下一个For循环
...全文
494 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
anjing5566 2009-08-06
  • 打赏
  • 举报
回复
还有,开了这么多记录集,没见关闭
anjing5566 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 toury 的回复:]
太乱了。

你想实现什么功能呢?用文字表述清楚,看看是否可以跟你点建议。

我猜测了一下,你是否是想删除[ResultTemp]表中的 [expdate]字段值小于[table1]表中的[expdate]字段值的记录?那两行代码就行了:
sql="DELETE FROM ResultTemp WHERE id IN (SELECT * FROM ResultTemp INNER JOIN table1 ON ResultTemp.customerid=table1.customerid WHERE table1.expdate > ResultTemp.expdate)"
conn.execute
[/Quote]

同上,lz不要不想复杂了
sumjor 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 toury 的回复:]
4L漏字了,看这个:HTML code<%
sql="DELETE FROM ResultTemp WHERE id IN (SELECT * FROM ResultTemp INNER JOIN table1 ON ResultTemp.customerid=table1.customerid WHERE table1.expdate > ResultTemp.expdate)"
con¡­
[/Quote]
up
toury 2009-08-06
  • 打赏
  • 举报
回复
4L漏字了,看这个:

<%
sql="DELETE FROM ResultTemp WHERE id IN (SELECT * FROM ResultTemp INNER JOIN table1 ON ResultTemp.customerid=table1.customerid WHERE table1.expdate > ResultTemp.expdate)"
conn.execute(sql)
%>
toury 2009-08-06
  • 打赏
  • 举报
回复
太乱了。

你想实现什么功能呢?用文字表述清楚,看看是否可以跟你点建议。

我猜测了一下,你是否是想删除[ResultTemp]表中的 [expdate]字段值小于[table1]表中的[expdate]字段值的记录?那两行代码就行了:
sql="DELETE FROM ResultTemp WHERE id IN (SELECT * FROM ResultTemp INNER JOIN table1 ON ResultTemp.customerid=table1.customerid WHERE table1.expdate > ResultTemp.expdate)"
conn.execute
shenzhenNBA 2009-08-06
  • 打赏
  • 举报
回复
语法非法嵌套问题,

比如错误的:
for ... to ..
if ... then

else

next
end if



比如正确的:for ... to ..
if ... then

else

end if
next
王者coco 2009-08-06
  • 打赏
  • 举报
回复
代码没有缩进,看不太明白
bleedinging 2009-08-06
  • 打赏
  • 举报
回复
浮渣

28,406

社区成员

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

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