Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/128874

From BetaArchive Wiki
Knowledge Base

Article ID: 128874

Article Last Modified on 1/19/2007


  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition

This article was previously published under Q128874

Novice: Requires knowledge of the user interface on single-user computers.


This article shows you how to shuffle the records in a table in random order. It also shows you how to get <n> records from a table at random (where <n> is the number of records that you want). You can use this method to make sure that the records will never be repeated.


To shuffle the records in a table, create a query based on that table and all its necessary fields. Add a calculated field that contains the Rnd() function with a positive integer variable parameter. Then, sort by this calculated field. Every time you evaluate the query, the records will be shuffled.

To get <n> records at random, set the query's TopValues property to the number of records you want.

The Rnd() function requires a numeric argument to return a random number. If the argument is greater than zero, the next random number in the sequence is returned. Because of the way queries are optimized, if you create a calculated field with a numeric argument such as


the query calculates the Rnd() function once and then repeats the same value throughout the recordset. To avoid the repetition, create a calculated field with a variable numeric argument. For example, if the table has an Employee ID field, you can use the following expression as the variable numeric argument:

Expr1:Rnd([Employee ID])

If the table does not have a numeric field, write an expression such as the following to calculate a numeric value based on any other field:

Expr1:Rnd(len([First Name]))

The Rnd() function ignores the expression, but the variable nature of the argument forces the query to evaluate the Rnd() function for every record.


For more information about returning a random record please see the following article in the Microsoft Knowledge Base:

108435 ACC: Sample Function to Return a Random Record

For more information about the TopValues property, search for "TopValues," and then "TopValues Property" using the Microsoft Access 97 Help Index.

Keywords: kbhowto kbusage KB128874