加急求助:如何实现每次只读取一条记录,停顿几秒后,再执行下一条

gandalf11 2009-06-17 11:12:21
事情是这样的:
我有一个数据表,表里面存放的是涉及到动画播放的参数,实现从表里一边取出数据,同时就播放动画.现在的问题是:由于取出的记录这一过程太快了,动画还没有来得及播放,就已经是到最后一条记录了,所以看起来好象没有播放.

Set rs=server.CreateObject("ADODB.RecordSet")
sql="select * from vnet_nd order by id asc"
rs.open sql,conn
Do While Not rs.eof
v_state=Replace(rs("v_state"),"~","'")
%>
<script language="javascript">
{
parent.GetViewer().SetViewState("<%=v_state%>"); //这个各位不用研究,用来播放动画的
}
</script>
<%
rs.movenext
Loop
End If

我如果在parent.GetViewer().SetViewState("<%=v_state%>"); 下边加一条alert("")
点了弹出框的确定后,就能播放,但每读取一条,都要点一下弹出框,肯定是不行的.请各位帮忙想想办法
...全文
94 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzj34 2009-06-18
  • 打赏
  • 举报
回复
setTimeout("parent.GetViewer().SetViewState(" <%=v_state%>")",5000) 
薪水 2009-06-18
  • 打赏
  • 举报
回复
顶~
  • 打赏
  • 举报
回复
<%Set rs=server.CreateObject("ADODB.RecordSet")
sql="select v_state from vnet_nd order by id asc"
rs.open sql,conn,1,1
if not rs.bof then
rsArray = rs.GetRows()
nRows = UBound(rsArray,2)
%>
<script>
var i=0;//这个是全局变量,循环一下增加1,为下次的数据调用使用,比如rsArray(0,0)表示第一条记录v_state的值,rsArray(0,1)表示第二条记录v_state的值
function show()
{
//这里用settimeout来做你要的效果
}
</script>

<%end if%>
tianjy 2009-06-18
  • 打赏
  • 举报
回复
你的代码还有一个问题
服务端脚本和客户端脚本这样组合有问题,即使能够实现几秒钟一条记录也无法显示动画,只是会造成很长时间页面没有反应而已
ACMAIN_CHM 2009-06-18
  • 打赏
  • 举报
回复

在客户端用javascript 来实现。

代码建议你先自己写起来,哪不对再贴出来大家参考。
gandalf11 2009-06-18
  • 打赏
  • 举报
回复
最好帮我写出点代码吧!
qqweird0001 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 smartcatiboy 的回复:]
这样持久打开数据库和asp链接,可能做会导致数据库损坏的。
应该先把数据全部取出,然后在客户端用settimeout之类慢慢放。
[/Quote]

二楼的意见值得思考,我也认为要先将数据都读出来,然后调用setInterval或settimeout慢慢放
  • 打赏
  • 举报
回复
用setTimeout延时执行show() 这个函数

大致这样吧
<script>
var i=0;//这个是全局变量,循环一下增加1,为下次的数据调用使用,比如rsArray(0,0)表示第一条记录v_state的值,rsArray(0,1)表示第二条记录v_state的值
function show()
{
var ta=rsArray(0,i);//这里我只是随意写的,只是表达下意思,怎么用全局变量得到每条记录信息
parent.GetViewer().SetViewState(ta);
setTimeout("show()",1000)
if(i==nRows){//判断是否等于数组长度,就是等于记录数时,把i归0,从事开始循环
i=0
}
else{
i++
}
}
</script>


思路大致这样了,具体的你自己实现
gandalf11 2009-06-18
  • 打赏
  • 举报
回复
<script>
var i=0;//这个是全局变量,循环一下增加1,为下次的数据调用使用,比如rsArray(0,0)表示第一条记录v_state的值,rsArray(0,1)表示第二条记录v_state的值
function show()
{
//这里用settimeout来做你要的效果
}
</script>

六楼的这个代码怎么写啊?
gandalf11 2009-06-18
  • 打赏
  • 举报
回复
用6楼的方法可以传到数组里面去,但我明白怎么隔多少秒取一条记录
我用
setTimeout("parent.GetViewer().SetViewState(ta)",1000)
这个肯定不对吧
因为这是在每隔1秒钟就把同样的值传给了控件,而不是每隔1秒钟就去下一个数组中数据,求各位,写写代码吧
smartcatiboy 2009-06-17
  • 打赏
  • 举报
回复
这样持久打开数据库和asp链接,可能做会导致数据库损坏的。
应该先把数据全部取出,然后在客户端用settimeout之类慢慢放。
ttt2 2009-06-17
  • 打赏
  • 举报
回复
1.读取数据存成数组
2.用ajax定时读取数据

28,390

社区成员

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

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