Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
ВнизКак перейти к n-ой записи ADOQuery? Найти похожие ветки
← →
Мелкий (2009-06-04 19:27) [0]MS Access
Уважаемые мастера не могу разобраться как можно без ADOQuery.Next получить данные n-ой записи запроса (n<= ADOQuery.RecordCount
).ADOQuery.Open
а дальше не знаю что делать, возможно, что уADOQuery
есть что-то вроде Count или Index, но я к сожалению этого не знаю.
Подскажите как это можно осуществить или прочитать об этом.
Спасибо
← →
Нат © (2009-06-04 19:36) [1]Что мешает нажать F1? Прочитать можно во встроенной справке, купить или скачать какую-л книжку.
DataSet.MoveBy
← →
int64 (2009-06-04 19:44) [2]Мелкий (04.06.09 19:27)
Сомнительная необходимость.
← →
Мелкий (2009-06-04 19:46) [3]> Нат © (04.06.09 19:36) [1]
Спасибо заMoveBy
← →
sniknik © (2009-06-04 20:05) [4]хотя это и глупо полагаться на порядковый номер записи, но ADOQuery.RecNo:= n;
в том случае когда RecNo актуально, должно работать. прочем, когда неактуально и MoveBy не будет, т.к. там RecordCount используется.
p.s. лучше меняй логику программы, так чтобы не использовать сомнительные методы.
← →
Мелкий (2009-06-04 20:25) [5]> sniknik © (04.06.09 20:05) [4]
> p.s. лучше меняй логику программы, так чтобы не использовать cомнительные методы.
Возможно в этом есть смысл, поскольку конкретно моя задача заключается в случайной выборке n записей изADOQuery.RecordCount
.
Я генерируюn
изADOQuery.RecordCount
случайных чисел и затем обрабатываю эти записи.
Скорее всего, действительно, есть более удачные решения, чем я предполагаю использовать.
← →
sniknik © (2009-06-04 21:05) [6]> Скорее всего, действительно, есть более удачные решения, чем я предполагаю использовать.
наверняка есть, но решаемая задача видать засекречена, т.к. о ней ни слова, вместо нее в ветке обсуждается "пустячок", частный случай того как ты видишь это решение
и раз оно основано на RecordCount то сразу можно сказать идиотское решение... (подставим например конкретные, пусть и вымышленные числа вместо безликих переменных - пусть n = 5 и RecordCount = 1 000 000, получается выборка из миллиона записей ради 5 обрабатываемых значений, причем вся выборка только ради того чтобы узнать количество... что это как не идиотизм?)
и даже не полное решение а часть части - "вот тут нужно что то, я не знаю для этого функции. подскажите ее". - двойной идиотизм.
← →
MsGuns © (2009-06-04 21:06) [7]>Мелкий (04.06.09 20:25) [5]
>Я генерирую n из ADOQuery.RecordCount случайных чисел и затем >обрабатываю эти записи.
Не проще ли в запросе указать Top n
← →
palva © (2009-06-04 21:44) [8]Если в запросе есть числовое поле id то можно получить 5 случайных записей следующим образом:
SELECT TOP 5 rnd(id), * FROM table1 ORDER BY 1
← →
sniknik © (2009-06-04 21:54) [9]> SELECT TOP 5 rnd(id), * FROM table1 ORDER BY 1
не обязательно вносить сортируемое условие в результаты, можно просто
SELECT TOP 5 * FROM table1 ORDER BY rnd(id)
ну и конечно * заменить на список только нужных полей.
← →
palva © (2009-06-04 22:08) [10]sniknik
А как сделать randomize для данного случая, не знаешь?
← →
sniknik © (2009-06-04 23:06) [11]> А как сделать randomize для данного случая, не знаешь?
нет там такого как randomize это не же паскаль. а начальную точку последовательности, seed вроде называется (randomize тоже ее устанавливает), можно установить вызвав функцию с отрицательным значением.
← →
oldman © (2009-06-04 23:11) [12]
> Я генерирую n из ADOQuery.RecordCount случайных чисел и
> затем обрабатываю эти записи.
Если количество записей в базе постоянно (например, если пишешь опросник-тест), заведи поле с номером и шагай на него запросом.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c