I have now got my random sample nearly working, It creates a temporary table and creates a newfield RandomNumber, but when it comes to assign a randnumber it updates the first 350,000 and then crashes. When I run debug the line of code it stops as it is rst.Update and any records in the temp table after this are not assigned a randon number. Any ideas why this is the case or any possible solutions. I am using access 2000 and that table contains just over 2 million records
Option Compare Database
Sub PickRandom()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim rst As DAO.Recordset
Dim strSQL As String
Dim strTableName As String
strSQL = "SELECT tblAccount.Surname " & _
"INTO tblTemp " & _
"FROM tblSurname;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Set db = CurrentDb()
Set tdf = db.TableDefs("tblTemp")
Set fld = tdf.CreateField("RandomNumber", dbDouble)
tdf.Fields.Append fld
Set rst = db.OpenRecordset("tblTemp", dbOpenTable)
rst.MoveFirst
Do
Randomize
rst.Edit
rst![RandomNumber] = Rnd()
rst.Update
rst.MoveNext
Loop Until rst.EOF
rst.Close
Set rst = Nothing
strTableName = "tblRandom_"
strSQL = "SELECT TOP tblTemp.Account " & _
"INTO " & strTableName & " " & _
"FROM tblTemp " & _
"ORDER BY tblTemp.RandomNumber;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
db.TableDefs.Delete ("tblTemp")
End Sub
Option Compare Database
Sub PickRandom()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim rst As DAO.Recordset
Dim strSQL As String
Dim strTableName As String
strSQL = "SELECT tblAccount.Surname " & _
"INTO tblTemp " & _
"FROM tblSurname;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
Set db = CurrentDb()
Set tdf = db.TableDefs("tblTemp")
Set fld = tdf.CreateField("RandomNumber", dbDouble)
tdf.Fields.Append fld
Set rst = db.OpenRecordset("tblTemp", dbOpenTable)
rst.MoveFirst
Do
Randomize
rst.Edit
rst![RandomNumber] = Rnd()
rst.Update
rst.MoveNext
Loop Until rst.EOF
rst.Close
Set rst = Nothing
strTableName = "tblRandom_"
strSQL = "SELECT TOP tblTemp.Account " & _
"INTO " & strTableName & " " & _
"FROM tblTemp " & _
"ORDER BY tblTemp.RandomNumber;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
db.TableDefs.Delete ("tblTemp")
End Sub