很久没用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