Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перейти к n-ой записи ADOQuery? [D5, XP]


Мелкий ©   (2009-06-04 19:27:00) 

MS Access
Уважаемые мастера не могу разобраться как можно без ADOQuery.Nextполучить данные n-ой записи запроса (n <= ADOQuery.RecordCount).

ADOQuery.Open

а дальше не знаю что делать, возможно, что у ADOQueryесть что-то вроде Count или Index, но я к сожалению этого не знаю.
Подскажите как это можно осуществить или прочитать об этом.
Спасибо


oldman   (2009-06-04 23:11:00) [1]


> Я генерирую n из ADOQuery.RecordCount случайных чисел и
> затем обрабатываю эти записи.


Если количество записей в базе постоянно (например, если пишешь опросник-тест), заведи поле с номером и шагай на него запросом.


sniknik   (2009-06-04 23:06:00) [2]

> А как сделать randomize для данного случая, не знаешь?
нет там такого как randomize это не же паскаль. а начальную точку последовательности, seed вроде называется (randomize тоже ее устанавливает), можно установить вызвав функцию с отрицательным значением.


palva   (2009-06-04 22:08:00) [3]

sniknik
А как сделать randomize для данного случая, не знаешь?


sniknik   (2009-06-04 21:54:00) [4]

> SELECT TOP 5 rnd(id), * FROM table1 ORDER BY 1
не обязательно вносить сортируемое условие в результаты, можно просто
SELECT TOP 5 * FROM table1 ORDER BY rnd(id)
ну и конечно * заменить на список только нужных полей.


palva   (2009-06-04 21:44:00) [5]

Если в запросе есть числовое поле id то можно получить 5 случайных записей следующим образом:
SELECT TOP 5 rnd(id), * FROM table1 ORDER BY 1


MsGuns   (2009-06-04 21:06:00) [6]

>Мелкий   (04.06.09 20:25) [5]
>Я генерирую n из ADOQuery.RecordCount случайных чисел и затем >обрабатываю эти записи.

Не проще ли в запросе указать Top n


sniknik   (2009-06-04 21:05:00) [7]

> Скорее всего, действительно, есть более удачные решения, чем я предполагаю использовать.
наверняка есть, но решаемая задача видать засекречена, т.к. о ней ни слова, вместо нее в ветке обсуждается "пустячок", частный случай того как ты видишь это решение
и раз оно основано на RecordCount то сразу можно сказать идиотское решение... (подставим например конкретные, пусть и вымышленные числа вместо безликих переменных - пусть  n = 5 и RecordCount = 1 000 000, получается выборка из миллиона записей ради 5 обрабатываемых значений, причем вся выборка только ради того чтобы узнать количество... что это как не идиотизм?)
и даже не полное решение а часть части - "вот тут нужно что то, я не знаю для этого функции. подскажите ее". - двойной идиотизм.


Мелкий   (2009-06-04 20:25:00) [8]

> sniknik ©   (04.06.09 20:05) [4]


> p.s. лучше меняй логику программы, так чтобы не использовать cомнительные методы.


Возможно в этом есть смысл, поскольку конкретно моя задача заключается в случайной выборке n записей из ADOQuery.RecordCount.

Я генерирую nиз ADOQuery.RecordCountслучайных чисел и затем обрабатываю эти записи.

Скорее всего, действительно, есть более удачные решения, чем я предполагаю использовать.


sniknik   (2009-06-04 20:05:00) [9]

хотя это и глупо полагаться на порядковый номер записи, но ADOQuery.RecNo:= n;
в том случае когда RecNo актуально, должно работать. прочем, когда неактуально и MoveBy не будет, т.к. там RecordCount используется.

p.s. лучше меняй логику программы, так чтобы не использовать сомнительные методы.


Мелкий   (2009-06-04 19:46:00) [10]

> Нат ©   (04.06.09 19:36) [1]

Спасибо за MoveBy


int64   (2009-06-04 19:44:00) [11]

Мелкий   (04.06.09 19:27)  

Сомнительная необходимость.


Нат   (2009-06-04 19:36:00) [12]

Что мешает нажать F1? Прочитать можно во встроенной справке, купить или скачать какую-л книжку.
DataSet.MoveBy


Наверх

Титульная страница Поиск, карта сайта Написать письмо