在ACCESS中,怎么随机取20条数据????还有自动交卷怎么搞?

ggdw 2003-10-17 09:25:01
select top 20 * from table order by rnd(id)
这个办法不行,在access中用rnd(field)的确可以达到随机查询,但在web上就会一直出现同样的n条记录,就是不刷新,很奇怪的,
...全文
144 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
allfirst 2003-10-19
  • 打赏
  • 举报
回复
先产生随机数数组,然后写SQL语句的时候从其中选取
minghui000 2003-10-19
  • 打赏
  • 举报
回复
yo
goldme76 2003-10-19
  • 打赏
  • 举报
回复
to topmonkey(Java初学者),不错,你不说我还没想到呢, 向你学习
mycl3344 2003-10-18
  • 打赏
  • 举报
回复
這樣簡單實用
<%
dim sum '数据库中题目总数
dim snum '要选题目总数
dim cursum '已选的题目总数
dim arr() '存已选的题目
dim cur '当前选的
'-----------------------------------
snum=cint(dannum)
Randomize
intRand = Int(100* Rnd +1)
set rs1=Server.createobject("adodb.recordset")
sql="select * from 題庫 where ****
rs1.open sql,conn,3,2
sum=rs1.recordcount
if sum<snum then '如果题目总数少于要抽取题目的数目,退出程序
response.write"还没有您要考试科目的试题"
response.end
end if
redim arr(snum)
cursum=0

while cursum<=snum
cur=Int(sum*Rnd+1)

for i=1 to cursum
if arr(i-1)=cur then
exit for
end if
next
if cursum=0 or i>cursum then
arr(cursum)=cur
cursum=cursum+1
end if
wend
for i=0 to snum-1
rs1.movefirst
'response.write arr(i)&" "
rs1.move arr(i)-1
%>
coolboy0000love 2003-10-18
  • 打赏
  • 举报
回复
ding
ggdw 2003-10-18
  • 打赏
  • 举报
回复
UP
topmonkey 2003-10-17
  • 打赏
  • 举报
回复
楼上goldme76(金蜂)的方法很好,但是美中不足。因为取得的20条记录有可能会有重复的。看我的:
<%
Dim sql, i, rs, arrMax, arrRs(19)
Randomize
Set rs = Server.CreateObject("Adodb.Recordset")
sql="SELECT * FROM table"
rs.Open sql, conn, 1, 1

If rs.RecordCount > 19 Then
arrMax = 19
Else
arrMax = rs.RecordCount - 1
End If

getRndArr rs.RecordCount '调用子程序
For i = 0 To arrMax
rs.AbsolutePosition = arrRs(i)
......取出数据......
Next

Sub getRndArr(maxRC)
Dim n, rndInt
For n = 0 To arrMax
rndInt = CLng(Rnd() * maxRC)
If Not chkExist(rndInt, n) Then
arrRs(n) = rndInt - 1
Else
n = n - 1
End If
Next
End Sub

Function chkExist(theRndV, arrPc)
Dim p
For p = 0 To arrPc
If arrRs(p) = theRndV Then
chkExist = True
Exit Function
End If
Next
chkExist = False
End Function
%>
zhgroup 2003-10-17
  • 打赏
  • 举报
回复
用随机数产生一个范围在ID范围内的随机数,然后将其存入数组然后循环数组,根据数组中的值调用表中的ID的值。
goldme76 2003-10-17
  • 打赏
  • 举报
回复
<% sql="select * from table"
rs.open sql,conn,1,1
do while i<20
rs.absoluteposition=随机数
//读取记录代码
........
//读取记录代码结束
i=i+1
loop
%>
pjchuqi 2003-10-17
  • 打赏
  • 举报
回复
没做过这方面的程序,用下面的方式试试!
把top 20取消,使用for做记数试试?
qdubit 2003-10-17
  • 打赏
  • 举报
回复
关注!
suhuoqiang 2003-10-17
  • 打赏
  • 举报
回复
晕...??
但在web上就会一直出现同样的n条记录,就是不刷新,很奇怪的,

不明白

28,390

社区成员

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

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