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