paste this code into a module,
set sTBL = your table name
set your kFLD to the fieldname you want randomized
change the key field: [ClientID] to your key field.
run: RandomOrder
Code:
Public Sub RandomOrder()
Dim iTot As Long, iRec As Long
Dim iSample As Integer
Dim sTbl As String, sSql As String
Dim rst 'As Recordset
Dim i As Long
Dim iRnd As Long, lNdx As Long
Dim coll As New Collection
Dim sKey As String
'field to fill the random#
Const kFLD = "RandomOrder"
DoCmd.SetWarnings False
sTbl = "tClients"
'clear the order#
sSql = "update " & sTbl & " set [" & kFLD & "] = null"
DoCmd.RunSQL sSql
'collect all keys to alter their order
Set rst = CurrentDb.OpenRecordset("select [ClientID] from " & sTbl)
With rst
While Not .EOF
sKey = rst.Fields("ClientID").Value & ""
coll.Add sKey, sKey
.MoveNext
Wend
End With
Set rst = Nothing
'pick key at random then set new order for it
i = 0
While coll.Count > 0
i = i + 1
iRnd = Int(coll.Count * Rnd + 1)
'Debug.Print iRnd
sKey = coll(iRnd)
lNdx = CLng(sKey)
sSql = "update " & sTbl & " set [" & kFLD & "] = " & i & " where [ClientID]= " & lNdx
DoCmd.RunSQL sSql
coll.Remove sKey
nextNum:
Wend
DoCmd.SetWarnings True
DoCmd.OpenTable sTbl
MsgBox "done"
Set coll = Nothing
Exit Sub
Resume nextNum
End Sub