2016-02-17 98 views
2

我使用這個簡單的查詢使用隨機排序在MS-Access數據庫:隨機排序查詢訪問

SELECT pk FROM TABLE ORDER BY Rnd(pk) asc 

,它的工作很好,當我與Microsoft Access測試2010

然而,當我使用傳統的asp調用這個查詢時,隨機排序不起作用。

這裏是我的代碼:

set Rs = Server.CreateObject("ADODB.Recordset") 
Rs.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/dbfolder") & "\dbname.mdb" 

Rs.Source = "SELECT pk FROM TABLE ORDER BY Rnd(pk) asc" 
Rs.CursorType = 3 
Rs.CursorLocation = 2 
Rs.LockType = 3 
Rs.Open() 

do while not Rs.eof 
    'do stuff 
    Rs.Movenext 
loop 
+1

什麼是「不工作」是什麼意思? –

+0

對不起,這意味着沒有隨機排序。訂購它總是相同,當我刷新頁面 –

+0

你可以發佈'connessione'連接字符串*(不包含用戶名和密碼)*? – Lankymart

回答

3

你只需要「salt」你的隨機數生成器:

Rs.Source = "SELECT pk FROM TABLE ORDER BY Rnd(-Timer() * [pk]) Asc" 
1

最後看來,我找到了解決辦法。

來源:http://www.cosnetics.co.uk/articles/select-random-records-from-access/

按照什麼寫在上面的鏈接

這裏是從Access選擇隨機記錄 數據庫的一個非常簡單的方法:

SELECT TOP 5 * FROM [tableName] ORDER BY rnd(INT(NOW*id)-NOW*id)

的只有先決條件是您有一個自動編號標識列。它也應該注意,雖然這會產生一組隨機的記錄,但它們在數學意義上並不是真正的隨機數,但對於大多數用途而言,它們應該是足夠隨機的。

這種選擇記錄的方法也適用於sql server,但是您的 必須將rnd更改爲rand。

如果您找到更好的解決方案,我很樂意將其標記爲良好的解決方案。同時,我會在這裏留下。希望這會幫助別人。 (你不會相信,但我花了一些時間來找到它)