access数据库随机显示问题

方法一:有人用如下代码以记录总数为极大值来首先提取出指定数量的随机数,然后以这些随机数做为记录ID。

dim n,j
dim su()
dim a,b,k
b=myrs.RecordCount
Randomize
redim su(index_N)
su(1)=Int((b * Rnd) + 1)
for n=2 to index_N
  a=Int((b * Rnd) + 1)
  for j=1 to n
      do while a=su(j)
          a=Int((b* Rnd) + 1)
          j=1        
      loop
  next
  su(n)=a
next

这种方式有一些问题,就是当ID不是连续的话,有可能某些随机数不存在ID序列当中。另外ID的最大值与总的记录值不一定相等,这样有些记录ID会永远被忽略。

方法二:有人采用一条SQL语句解决此问题
select top 50 * from table order by int(rand()*50)
如果这条语句可行的话是个不错的方法。我测试这条语句并没有通过,如果有人知道是哪有问题请告诉我,非常感谢。

方法三:有这样一种也不行,我测试没通过。

yourstr="*1*3*4*6*12*...."
sql="select top 10 * form yourdb where instr('*'&id&'*','"&yourstr&"')<>0"



下面讲正确方法:

Randomize
sq="SELECT TOP 10 [content] FROM [T1] ORDER BY rnd(-(id+" & rnd() & "))"

用这个就可以实现用一条SQL得到Access数据库中的随机记录集!

一定要记的在sql语句前加Randomize

可以自己再测试一下
by 雪洁 2010-12-08 13:03:22 2662 views
我来说几句

相关文章