|
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 44
|
|
Выбор случайной записи24.08.2010, 13:41. Показов 8734. Ответов 21
Метки нет (Все метки)
Как в форме отображать записи из таблицы, выбранные случайным образом, а не попорядку. Где, в каком месте прописывается код?
Помогите!!!!!!!!!
0
|
|
| 24.08.2010, 13:41 | |
|
Ответы с готовыми решениями:
21
выборка случайной записи |
|
|
|
| 24.08.2010, 14:23 | |
|
А что такое 'случайным образом'? Разве 'попорядку' это не случайным образом? Ведь выдача по порядку тоже может случиться. С другой стороны, на компьютере ничего не бывает случайным образом. Настоящая случайность - только в квантовой механике, да в воспаленном воображении.
0
|
|
|
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 44
|
|
| 24.08.2010, 14:40 [ТС] | |
|
случайным образом - это, например: 100,3,214,5,24, т.е. вопросы отображаются не по порядку, а в разброс
0
|
|
|
5 / 5 / 0
Регистрация: 19.03.2009
Сообщений: 743
|
|
| 24.08.2010, 15:54 | |
|
Добавить к таблице поле. Заполнить его псевдослучайными числами (см.HELP по Randomize и Rnd). При выводе в форму отсортировать по этому полю.
0
|
|
|
|
||||||
| 24.08.2010, 16:05 | ||||||
|
Тогда вас должен устроить датчик случайных чисел. Попробуйте перетасовать записи. Я приведу пример программы, а вы сможете приспособить ее к своему случаю. Программа на vbs, но будет работать и на VBA
0
|
||||||
|
5 / 5 / 0
Регистрация: 19.03.2009
Сообщений: 743
|
|
| 24.08.2010, 16:42 | |
|
На всякий случай уточняю. Заполнение поля нужно выполнять в Событии Открытие(Open) формы (или еще раньше ;-). Можно, конечно, использовать и служебную таблицу с двумя полями: псевдослучайное число(заполняется Вами) и первичный ключ таблицы с вопросами. В общем вариантов много. Удачи
0
|
|
|
|
|
| 24.08.2010, 17:41 | |
|
Это очень странно, но у меня работает такой каверзный запрос
SELECT id FROM prices ORDER BY rnd(id) (Access 2000) rnd без параметра тоже работает, но случайность результата плохая, возможно в этом случае rnd вычисляется один раз как независящий от полей записи.
0
|
|
|
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 44
|
|
| 25.08.2010, 11:36 [ТС] | |
|
Спасибо всем, кто откликнулся на мою проблему. Обязательно попробую
0
|
|
|
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 44
|
|
| 25.08.2010, 16:57 [ТС] | |
|
palva, я попробовала и у меня получился вывод чисел в разброс, но они отображаются в отдельном окне, а мне надо, чтоб вопросы в моей форме таким же образом отображались
0
|
|
|
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 56
|
|
| 30.08.2010, 10:14 | |
|
2 palva: ИМХУ функция RND без параметра возвращает значение типа Double(т.к. инициализируется системным таймером), т.е. поле тоже должно иметь тип Double, а если у поля тип - целое, тогда нужно передавать в ф-цию диапазон в виде целого числа, иначе можно вообще получить в данном поле одно и то же число(т.е. сортировка по данному полю теряет смысл).
СК! 73!
0
|
|
|
|
||||||
| 30.08.2010, 12:12 | ||||||
|
Я заглянул в документацию по Rnd, там написано, что функция возвращает Single. Если задан положительный параметр, то возвращается очередное случайное число. Если параметр не задан, то то же самое. О каком поле вы говорите я не понял. После ORDER BY у меня стоит выражение. Логичнее было бы поставить Rnd без параметров, но тогда обращение к Rnd происходит один раз, по-видимому SQL процессор считает, что раз выражение не зависит от полей записи, то оно будет одно и то же для всех записей. Поэтому мне пришлось поставить параметр. Поскольку в моем случае параметр - положительное число, то это не повлияло на характер работы Rnd, зато вычисление выражения происходит для каждой записи заново. Наверно можно было бы использовать другое подходящее поле, например если имеется pole VARCHAR, которое нигде не равно NULL, то можно было бы написать выражение так:
Rnd(Len(pole)+1) Наверно перед работой полезно вызвать Randomize, но я не знаю, как это сделать. Randomize в начале работы скрипта никакого влияния на результат не оказывает. По видимому SQL-процессор имеет свой собственный датчик. Если бы Randomize было не процедурой, а функцией, ее можно было бы как-то вызвать внутри SQL предложения. К счастью можно вызвать Rnd с отрицательным параметром и, тем самым, рандомизировать SQLевский датчик. На его вход надо подать результаты работы датчика бейсиковского. У меня такой вариант сработал (Access 2000), то есть сначала я делаю Randomize (в бейсике), а потом формирую SQL-предложение следующим образом:
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 56
|
||||||
| 30.08.2010, 13:29 | ||||||
|
Значит я попутал с Пасовским Рнд, сорри.
А насчет Randomize в запросе... Как насчет того чтобы вызывать его из запроса через ф-цию? Типа:
Статическая переменная flg служит для того чтобы 'рандомизация' происходила только один раз, только надо проверить, сброситься флаг после того как запрос отработает или нет. СК! 73!
0
|
||||||
|
|
|
| 30.08.2010, 13:55 | |
|
А разве можно вызывать функцию бейсика из запроса? Ведь Rnd это функция стандартная для SQL Access, поэтому запрос работает. Даже если можно было бы обратиться к функции из запроса, рандомизировался бы бейсиковский датчик, а не SQLевский. А что мы будем делать, если запрос вызывается из языка си через ODBC? Не будет же запрос в процессе выполнения обращаться к сишной функции.
0
|
|
|
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 56
|
|
| 31.08.2010, 10:33 | |
|
В Акцессе можно вызывать Васиковские ф-ции(см. через 'Построитель выражений'). Но в вышеприведенном коде из запроса вызывается пользовательская ф-ция, а уже она вызывает Рандомизе, именно потому что оная является процедурой и напрямую вызвать ее из запроса не получиться. Как там обстоят дела у 'чистого' SQL-а и Си я ХЗ, т.к. не копенгаген, в достаточной мере, но здесь обсуждался данный вопрос применительно к эхотагу. ИМХУ.
СК! 73!
0
|
|
|
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 56
|
||||||
| 31.08.2010, 13:23 | ||||||
|
Таблица1 состоит из одного поля [CodID].
Вот SQL-строка запроса: 'SELECT Таблица1.CodID, MyRnd() AS Expr FROM Таблица1 ORDER BY Rnd([CodID]);' Вот функция описаная в модуле:
СК! 73!
0
|
||||||
|
|
||||||
| 31.08.2010, 14:53 | ||||||
|
Наверно у меня не работает из за того, что я запускаю это как VBScript
то же самое сообщает Microsoft JET Database Engine Получается, что у большого бейсика с SQL более плотный контакт. Теперь другой скользкий вопрос, выведет ли ваш скрипт записи в разном порядке, если его запустить два раза? То есть, при выполнении Randomize который из двух датчиков рандомизируется?
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 56
|
|
| 31.08.2010, 15:44 | |
|
function fff()
^^^^^^^^ Функцию нужно явно объявить как Public, т.е. прописать Public function fff(), без этого и у меня ругался. Попробуйте, может так заработает. А что касается различности вывода... Запустил запрос несколько раз подряд - именно так и происходит, т.е. порядок вывода разный. СК! 73!
0
|
|
| 31.08.2010, 15:44 | |
|
Помогаю со студенческими работами здесь
20
Выбор случайной строки
Выбор случайной клавиши ListView: добавление записи, выбор записи, удаление записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|