回 帖 发 新 帖 刷新版面

主题:不好意思,刚来就提问一个随机筛选的问题。

我想要用asp(access)做一个随机筛选的数据,要怎么做··??
我用了很多种方法都不行
<% set rs=conn.execute("select top 5 * from Doc  order BY Rnd(id)") %>

搜索出来的数据每次都一样··

我用

<% set rs=conn.execute("select top 5 * from Doc  order BY Rnd(now())") %>

也不行··你能帮帮我么??

回复列表 (共7个回复)

沙发

有没有人帮帮忙···怎么解决
??

板凳

http://blog.programfan.com/article.asp?id=28986

3 楼

利用asp随机获取数据库中的记录且不出现重复的记录
<!--#include file="adoconn.asp"-->
<%
'-------------------------检索数据-----------------------
strSQL = "SELECT * FROM [table]"    
'Sql语句,检索数据库
'Set objRS = Server.CreateObject("ADODB.Recordset")    
'创建记录集
rs.Open strSQL,conn,1,1        
'执行检索
Count=rs.RecordCount            
'得到记录总数
Item=2                                                         
'显示记录数
'-------------------------检索数据-----------------------

'-------------------------------------------------------------------------------
redim a(Item, 3),t(Count)
'定义2数组,数组a用来储存记录,数组t用来删选记录

'---------------------------------------
'初始数组数值,目的为了插入数据以后和此值做比较
for each j in t
    j=0
next
'---------------------------------------

'---------------------------------------
' 随机抽取记录号
Randomize timer        '初始化随机数生成器
for j=1 to Item
    k=int(rnd*Count+1)    '从总数里面随机取一条记录
    do while t(k)<>0                    '判断是否记录是否已经在数组中
      k=int(rnd*Item+1)
    loop
    t(k)=1            '第k条记录被选中
next
'--------------------------------------
j=1:i=1'定义下标

'--------------------------------------
' 循环选取数据集rs中的部分记录存放到数组中
Do While Not rs.Eof
      if t(j)=1 then
          a(i,1)=rs("y_id")              '记录id
          a(i,2)=rs("y_start") '字段1
    a(i,3)=rs("y_end") '字段2
          i=i+1
     end if
j=j+1
rs.MoveNext
Loop
'--------------------------------------
'-------------------------------------------------------------------------------

'----------------------------显示内容--------------------
for i=1 to Item
    Response.write "序号"&a(i,1)&"<br>"
    Response.write "开始"&a(i,2)&"<br>"
 response.write "结束"&a(i,3)&"<p>"
next
'----------------------------显示内容--------------------

'---------------------------
'释放资源
rs.Close
set rs=nothing
Conn.Close
set Conn=nothing
'---------------------------
%>

adoconn.asp
<%
set rs=server.CreateObject("adodb.recordset")
db="aaa1.mdb"
set conn=server.CreateObject("adodb.connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.open connstr
%>

有没有简练点的??我都被带晕倒了,我最要随机筛选5条纪录就好了,而且每次刷新数据都不一样就好了·

4 楼

<!--#include file="adoconn.asp"-->
<%
strSQL = "SELECT * FROM [table]"    
rs.Open strSQL,conn,1,1        
Count=rs.RecordCount            
Item=2                                                         
redim a(Item, 3),t(Count)
for each j in t
    j=0
next
Randomize timer        
for j=1 to Item
    k=int(rnd*Count+1)   
    do while t(k)<>0                 
      k=int(rnd*Item+1)
    loop
    t(k)=1            
next
j=1:i=1
Do While Not rs.Eof
      if t(j)=1 then
          a(i,1)=rs("y_id")             
          a(i,2)=rs("y_start")
          a(i,3)=rs("y_end") 
          i=i+1
     end if
j=j+1
rs.MoveNext
Loop
for i=1 to Item
    Response.write "序号"&a(i,1)&"<br>"
    Response.write "开始"&a(i,2)&"<br>"
    response.write "结束"&a(i,3)&"<p>"
next
rs.Close
set rs=nothing
Conn.Close
set Conn=nothing
%>

不知道这样是不是简单些

5 楼

我问题解决了··

Randomize
    r = Rnd
set rs=conn.execute("select top 5 * from Doc  order BY rnd(" & r & "-id)")

可是我看不懂为什么这样··有人能帮我分析一下么??

这样也可以···

6 楼

在使用Rnd函数时,如果没有执行过Randomize命令,  
则产生的随机数总是相同的结果!  

为了能产生真正意义上的随机数,就需要在使用Rnd之前,执行一次Randomize命令。

Randomize称为随机种子命令,它实际上是用计算机内部时钟的毫秒数当种子,因为各台电脑里时钟毫秒数相同的可能性很小,并且每台电脑的时钟都是在不停的变化,所以执行过Randomize之后,产生的随机数就不相同了。   
 
 
 

7 楼

问一下
整个table表循环要怎么做??我要整个 <table>…………</table>横向循环·怎么做阿??有没有人能够帮帮我?望高人指点

<table>

<div align="center">
          <%sql1="select * from Doc where Week=1 and itime=1 and Section_d='语文'"
set rs1=conn.execute(sql1)
%>
          <%If Rs1.eof or Rs1.bof Then
                                Response.write "没有专家"
                            Else%>
          <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" class="kuan_xu">
            <% while rs1.eof = false %>
            <tr>
              <td><div align="center"> <%=rs1.fields("name")%> </div></td>
              <% rs1.movenext
       wend 
              %>
            </tr>
            <tr>
              <td><div align="right"></div></td>
            </tr>
          </table>
          <%End if%>
        </div>


</table>[em10][em10]

我来回复

您尚未登录,请登录后再回复。点此登录或注册