powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Паралич при выполнении запроса.
15 сообщений из 15, страница 1 из 1
Паралич при выполнении запроса.
    #32172145
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую компонент TADOQuery.
При выполнении запроса все приложение парализовано!
Возможно ли как-то это облагородить без thread?
Окошко "Please wait...", которое я открываю - тоже парализовано.
В идеале хочется сделать даже кнопку "Cancel"...

Заранее спасибо за любую помощь!
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172157
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Асинхронное соеденение. Т.е. добавь оцию adOpenAsync
Выполнение продолжается в обычном порядке не дожидаясь результатов.Нов этом случае самому нужно ловить окончание процесса если необходимо получить результаты. Если через рекордсет то FetchComplete, FetchProgress
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172185
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

А если у меня не возвращаются данные?
"exec myproc"
Тогда эти события не срабатывают...
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172206
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные не возвращаются т.е. типа вставка или обновление то ИМХО неважно когда закончится выполнение, тут уже более инетесно знать что оно закончилось без ошибок . Вот их то и придется ловить.
Т.е. В процедуре RaisError а на клиенте для запуска используя обьект SQLDMO
он валяется в самом сервере Sqldmo.dll
там создаешь сервер, коннектишься. И запускаешь(так же асинхронно) через процедуру ExecuteWithResultsAdnMessages.
Делаешь обработчик его сообщений и все. Только обработчики надо делать для всех его событий иначе ошибка(это баг у них такой , сам мучался)
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172227
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого!
На самом деле у меня процедура всего лишь пересчитывает данные.
Но не возвращает ничего.
И приложению надо понимать когда показать новые результаты подсчета.
Вот я и думаю, может возвратить одну строку оттуда (для простоты)?
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172232
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кстати, прервать выполнение запроса нельзя?
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172245
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно возвратить типа Select 'OK' для простоты :)
А прервать только из самой процедуры - RETURN, RaisEROR(Severity больше 16)
Она ведь на деле просто ставится в очередь сапросов и клиент над ней власти не имеет.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172258
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, но с select 'ok' не прошло!
Все прекрасно работает (FetchComplete ловится) если у меня в запросе написано "select ....", но когда я меняю на требуемый "exec..." (процедуры в конце которой написано select 'ok') - событие не ловится!
Больше ничего не меняю!
Парадокс!
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172265
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из документации MSSQL я понял, что всетаки власть он имеет.
Там написано что открыты 2 буфера обмена. Для получения данных и для отсылки команд. И по второму как раз и посылается break.
Например SQL Server Query Analyser имеет кнопку Cancel executing, которая работает.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172294
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глянь в профайлере, он идет как текст или RPC call?
Попробуй добавить adCmdText, Хотя RPC более эффективен, но хз...
Процедура с параметрами?
Вот кстати никогда не пробовал прерывать выполнение.
Вероятно все-таки возможно, но как в этом случае быть с тразакциями?
Как в самой процедуре при прырывании вызвать Rollback?
Можно в принципе после прерывания его руками делать из клиента.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172299
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вопрос о прерывании запроса старый похоже.
Какие-то job-ы вроде можно запускать как вещали.
Сам когда-то это делал спекулятивно за счет посылания заведомо некорректное данное и процедура или функция PL/SQL вываливалась по exception-у, который ловил и делал, что требовалось после прерывания запроса так, чтобы программа клиентская работала дальше.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32172947
Михаил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В результате, мне удалось сделать все - и асинхронность и прерывания!

Я использую объект ADOCommand. Вызываю им хранимую процедуру (Execute). Этот объект имеет метод Cancel для прерывания. В свойствах я ему ставлю AsyncExecute. Но ловлю события ADOConnection к котому он привязан. А именно событие ExecuteComplete, реагируя на которое, проверяю на мой ли это объект command отработал.

Так что теперь у меня живое окно "WAIT..." с анимацией, отсчетом времени и кнопкой "Cancel".
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32379678
Фотография Miktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Михаил
А если нажали на Отмену? Как транзакции откарывать, если они запущены были из ХП? Очень интересуюсь сам.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32379697
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Михаил
А покажи, плиз, код ExecuteComplete. Интересен момент определения, что-же именно за команда отработала. А точнее, из какого компонента. Сам спрашивал тут как-то раз, но ответа не получил.
...
Рейтинг: 0 / 0
Паралич при выполнении запроса.
    #32379773
Фотография Miktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: Как-то по нанайски получилось
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Паралич при выполнении запроса.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]