一段返回随机记录的代码

很久没用ACCESS了,只是看到经常碰到有人问如何返回随机记录的问题,所以就贴了上来,随便看看。

 1   
 2Dim objConn   
 3Dim objRst   
 4Dim strSQL   
 5Dim strConnection   
 6Dim str   
 7Dim str1   
 8Dim cnt   
 9Dim cnt1   
10Dim rndMax   
11Dim RndNumber   
12  
13strConnection="driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/testdb.mdb")   
14strSQL = "SELECT id FROM tblQuestions"   
15  
16set objConn = Server.CreateObject("ADODB.Connection")   
17Set objRst = Server.CreateObject("ADODB.Recordset")   
18objConn.Open strConnection   
19set objRst.ActiveConnection = objConn   
20objRst.LockType = adLockOptimistic   
21objRst.CursorType = adOpenKeySet   
22objRst.Open strSQL   
23  
24objRst.MoveLast   
25cnt = objRst.RecordCount   
26cnt1 = cnt   
27rndMax = cnt   
28  
29If CInt(Request.Form("maxNumber")) < cnt Then   
30cnt1 = CInt(Request.Form("maxNumber"))   
31End If   
32  
33str = ","   
34str1 = ","   
35  
36Do Until cnt1 = 0   
37Randomize   
38RndNumber = Int(Rnd * rndMax)   
39  
40If (InStr(1, str1, "," & RndNumber & "," ) = 0) Then   
41str1 = str1 & RndNumber & ","   
42cnt1 = cnt1 - 1   
43objRst.MoveFirst   
44objRst.Move RndNumber   
45str = str & objRst("id") & ","   
46End If   
47  
48Loop   
49  
50objRst.Close   
51Set objRst = Nothing   
52  
53sql = "SELECT * FROM tblQuestions WHERE (((InStr(1,'" & str & "',(',' & [id] & ',')))<>0)) "   
54Set objRst = Server.CreateObject("ADODB.Recordset")   
55set objRst.ActiveConnection = objConn   
56objRst.LockType = adLockOptimistic   
57objRst.CursorType = adOpenKeySet   
58objRst.Open sql   

...DISPLAY THE RECORDS RETURNED...

1   
2objRst.Close   
3Set objRst = Nothing   
4  
5objConn.Close   
6Set objConn = Nothing   
Published At
Categories with Web编程
Tagged with
comments powered by Disqus