Access随机显示记录(不重复)解决方案:
看了很多人讨论关于access随机取记录的帖子,不才,写了一个随机显示记录的解决方法,希望大家指正。数据库里有5条记录,随机抽取4条。
code
--------------------------------------
<% '-------------------------数据库连接----------------------- Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" &_ "Data Source=" & Server.MapPath("data.mdb") objConn.Open '-------------------------数据库连接----------------------- '-------------------------检索数据----------------------- strSQL = "SELECT id,DataColumn FROM DataTable" 'Sql语句,检索数据库 Set objRS = Server.CreateObject("ADODB.Recordset") '创建记录集 objRS.Open strSQL, objConn, 1, 1 '执行检索 Count=objRS.RecordCount '得到记录总数 Item=4 '显示记录数 '-------------------------检索数据----------------------- '------------------------------------------------------------------------------- redim a(Item, 2),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'定义下标 '-------------------------------------- ' 循环选取数据集objRS中的部分记录存放到数组中 Do While Not objRS.Eof if t(j)=1 then a(i,1)=objRS("id") '记录id a(i,2)=objRS("DataColumn") '记录内容 i=i+1 end if j=j+1 objRS.MoveNext Loop '-------------------------------------- '------------------------------------------------------------------------------- '----------------------------显示内容-------------------- for i=1 to Item Response.write "序号"&a(i,1)&"<br>" Response.write "内容"&a(i,2)&"<p>" next '----------------------------显示内容-------------------- '--------------------------- '释放资源 objRs.Close set objRs=nothing objConn.Close set objConn=nothing '--------------------------- %>
Data
id DataColumn -------------------------- 1 a 2 b 3 c 4 d 5 e
……