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

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

Как сделать чтобы программа ждала пока выполнится запрос? [D6, IB6.x]


Брат ©   (2003-04-11 15:45:00) 

Вот я выполняю запрос через IBQuery. Сразу после IBQuery1.Active:=true у меня стоят операторы которые должны выполнится после того, как выполнится запрос.
Как сделать чтобы программа ждала пока выполнится запрос?
Надеюсь моёй вопрос понятен... ;)


NickBat   (2003-04-11 18:36:00) [1]

> Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.
Ну почему же. :))
Автор ветки писал:

> Брат © (11.04.03 16:44)
> Через IBQuery я выполняю оператор DELETE FROM...
...

> IBQuery2.Active:=true;

Откуда совет: делай ExecSQl
Хотя, судя по отсутствию автора ветки, у него все давно получилось. А мы тут копья ломаем :))


Anatoly Podgoretsky   (2003-04-11 18:18:00) [2]

А чего гадать?
Ну не хочет он показывать тексты запросов, видимо так оно ему нужно.


NickBat   (2003-04-11 18:08:00) [3]

Тебе может и понятно, а автор ветки писал:

IBQuery1.Active:=True;
IBQuery1.Last;


Sergey Masloff   (2003-04-11 18:07:00) [4]

NickBat © (11.04.03 17:50)
>Запросы вида delete запускать на выполнение не Open, а Exec.
ну это понятно...


NickBat   (2003-04-11 17:50:00) [5]

Запросы вида deleteзапускать на выполнение не Open, а Exec.


Sergey Masloff   (2003-04-11 17:33:00) [6]

Ребят, да вы что... Вся VCL выполняется в одном потоке, пока Query.Open() не сделалось никуда управление дальше не идет. Или Query в отдельной Thread выполняется? Тогда синхронизировать надо.


Жук   (2003-04-11 16:58:00) [7]

:-))) Идея :
a:=false;
IBQuery3:=TIBQuery.Create(Self);
IBQuery2.Active:=true;
while not a do
begin
IBQuery3.SQL.Clear;
IBQuery3.SQL.Add("select те записи, которые должны быть удалены");
IBQuery3.Open;
if IBQuery3.RecordCount<1 then a:=true;
IBQuery3.Close;
end;
IBQuery3.Free;
IBStoredProc1.ExecProc;
;-)))


NickBat   (2003-04-11 16:57:00) [8]

А так?
IBQuery2. ExecSQL;
IBStoredProc1.ExecProc;


Брат   (2003-04-11 16:44:00) [9]

Через IBQuery я выполняю оператор DELETE FROM...
Сразу после этого мне нужно выполнить хранимую процедуру, которая обновляет полученную после IBQuery таблицу...
но выполнение не выполняется, так как таблица оказывается занятой...
Прилагаю участок кода:
...
IBQuery2.Active:=true;
IBStoredProc1.ExecProc;
...
Нужно между этими оператора что-то вставить, чтобы хранимая процедура не выполнялась пока, не выполнится удаление из таблицы...Вот такая вот проблема.


Max Zyuzin   (2003-04-11 16:10:00) [10]

>Брат © (11.04.03 15:45)
Ну вы блин даете... а что она делает по твоему??? Они и ждет... или скажи конкретнее что хочешь...


samalex   (2003-04-11 16:08:00) [11]

Я думаю, он хочет долждаться момента, когда запрос возвратит полную выборку данных.
FetchAll.


SergeyNew   (2003-04-11 16:06:00) [12]

Тупой способ, но работает. Надо просто после Active:=True перейти на последнюю запись в возвращаемом наборе данных, т.е.
IBQuery1.Active:=True;
IBQuery1.Last;


Соловьев   (2003-04-11 16:05:00) [13]


> Надеюсь моёй вопрос понятен... ;)

не-а :)))))


Жук   (2003-04-11 15:59:00) [14]

А она, гадина, не ждёт ? :-)
Тогда можно цикл поставить :
while not IBQuery1.Active do ....:-)))


Наверх

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