ORDER BY RND(ID) каждый раз разный

franck_f
Дата: 25.11.2009 16:31:33
Добрый вечер всем.

Столкнулся с такой проблемой: при формировании временной таблицы нужна рандомизация записей (для системы тестирования)
делаю следующим образом

CurrentDb.Execute "SELECT tVoprosi.* INTO " & CurLog & "_temp " & _
                  "FROM tVoprosi WHERE tVoprosi.id_kursa=" & ttt & " ORDER BY rnd(id)"

где CurLog - Windows-логин пользователя
ttt - номер курса

Все отлично формируется, но есть один немаловажный нюнас (уже описаный на форуме, однако оставшийся без решения (может я невнимательно читал?)) -
при закрытии/открытии приложения набор рандомных чисел ОДИНАКОВЫЙ!

Как сделать так, чтобы при каждом открытии формировался разный набор записей?

Заранне благодарен за ответы
Владимир Саныч
Дата: 25.11.2009 16:35:44
Randomize
franck_f
Дата: 25.11.2009 16:37:21
Владимир Саныч,

а чуточку по-подробнее?

Randomize точно выдает каждый раз новый набор?
mds_world
Дата: 25.11.2009 16:41:25
ORDER BY rnd(id+Int(Time()*10000))
franck_f
Дата: 25.11.2009 17:02:50
mds_world,

как-то ничего не поменялось... =((
mds_world
Дата: 25.11.2009 17:10:34
franck_f
mds_world,

как-то ничего не поменялось... =((

Засомневался. Делаю запрос, подставляю сортировку и при каждом запуске она иная. Т.е. именно так, как вы и хотели
franck_f
Как сделать так, чтобы при каждом открытии формировался разный набор записей?
mds_world
Дата: 25.11.2009 17:11:33
Стоп. Разный набор записей или разная сортировка?
franck_f
Дата: 25.11.2009 17:13:05
mds_world,

вероятно я некорректно выразился - разный набор записей
Владимир Саныч
Дата: 25.11.2009 17:35:44
Так меняйте ttt, ёлы-моталы.
mds_world
Дата: 25.11.2009 17:45:21
Трудно сказать, что именно нужно. Ну, например так
Dim s
s=Int(rsd(time)*k)
CurrentDb.Execute "SELECT t.* INTO " & CurLog & "_temp " & _
                  "FROM (Select top " & s & ".* from tVoprosi ) t " _
                  & " WHERE t.id_kursa=" & ttt & " ORDER BY rnd(id)"
Здесь k - ограничитель для максимума случайного числа. Одновременно масштабный коэффициент (в том смысле, что случайные числа должны равномерно распределиться на отрезке 0-k)