Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.02;
Скачать: CL | DM;

Вниз

Как перейти к 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1243936751
Imag
2009-06-02 13:59
2009.08.02
Склейка фоток под музыку


4-1213778010
incm
2008-06-18 12:33
2009.08.02
Как в главном окне перехватывать сообщения WM_MDICREATE и т.п.


15-1244135367
POGiMplayer
2009-06-04 21:09
2009.08.02
Ограничить скорость Интернета.


3-1225226858
jiny
2008-10-28 23:47
2009.08.02
DBGridEh &amp; поддержка Unicode


15-1244147405
Юрий
2009-06-05 00:30
2009.08.02
С днем рождения ! 5 июня 2009 пятница