как незаметно пройтись по записям таблицы или запроса

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Нужно пройтись по всем записям в ADOQuery.
Пишем так:

ADOQuery1.First;
while not ADOQuery1.Eof do begin
// Какие-то операторы
ADoQuery1.Next
end;

При этом по DBGrid, который связан с ADQuery двигается курсор.
Можно ли пройтись по всем записям запроса, но незаметно для пользователя, чтобы курсор в DBGrid не перемщался.
YurikGL
Сообщения: 142
Зарегистрирован: 16 фев 2005, 21:54
Откуда: Уфа
Контактная информация:

1) связать с гридом другй Query
2) открыть запрос, по которому нужно пробежаться в другом Query
3) на время "пробежки" Grid.datasource:=''
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

"Открыть запрос" - то есть выполнить его чтоли ещё раз? Это не подходит, запрос один то раз выполняется долго, так что выполнить его ещё раз займёт много времени.

Или нужно сохранить результаты первого запроса в файл и открыть их во втором? Это тоже не подходит.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Viktor Zull, всё проще:

Код: Выделить всё

var
  bm: string;
...
bm :=  ADOQuery1.Bookmark; // запомнить тек. поз.
ADOQuery1.DisableControls;
try
  ADOQuery1.First; 
  while not ADOQuery1.Eof do 
  begin 
    // Какие-то операторы 
    ADoQuery1.Next 
  end; 
finally
  ADOQuery1.Bookmark := bm; // восстановить тек. поз.
  ADOQuery1.EnableControls;
end;

читаем справку по представленным методам ;)
Ответить