求牛人帮忙看一下一个关于打乱数据库数据顺序的asp代码

来源:百度知道 编辑:UC知道 时间:2024/07/08 15:25:31
下面的代码如果数据量很大(比如有3000多个)则无法打乱数据顺序 请牛人能看一下为什么吗

<%
Dim Conn
Dim Connstr
Connstr="DBQ="+server.mappath("../data/db1.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set Conn=Server.Createobject("ADODB.Connection")
Conn.Open Connstr
Dim Rs
Set Rs=Server.CreateObject("ADODB.Recordset")
%>
<%
Dim sql
Randomize
for i=1 to 999
set rs=server.CreateObject("adodb.recordset")
Sql="select * from table1 where AlreadyMark='N'"
Rs.Open Sql,conn,3,2
Count=rs.recordcount
temp=fix(Count*rnd)
if not rs.eof then
rs.move temp
rs("AlreadyMark")="N"
rs("kh")=200861&right("00"&i,3)
rs("kc")=int(0.99+i/25)

%>

<%

因为你那个遁环只执行999次,如果数据表有3000条记录就要把
for i=0 to 999 改成 for i=0 to 3000
或用下面的代码
<%
Dim Conn
Dim Connstr
Connstr="DBQ="+server.mappath("../data/db1.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set Conn=Server.Createobject("ADODB.Connection")
Conn.Open Connstr
Dim Rs
Set Rs=Server.CreateObject("ADODB.Recordset")
%>
<%
Dim sql
Randomize
set rs=server.CreateObject("adodb.recordset")
Sql="select * from table1 where AlreadyMark='N'"
Rs.Open Sql,conn,3,2
Count=rs.recordcount
temp=fix(Count*rnd)
do not rs.eof then
rs("AlreadyMark")="N"
rs("kh")=200861&right("00"&temp,3)
rs("kc")=int(0.99+i/25)
%>

<%
rs.movenext
loop
Rs.Close
Set Rs=Nothing
sql="upd