Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Использую компонент TADOQuery. При выполнении запроса все приложение парализовано! Возможно ли как-то это облагородить без thread? Окошко "Please wait...", которое я открываю - тоже парализовано. В идеале хочется сделать даже кнопку "Cancel"... Заранее спасибо за любую помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 17:35 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Асинхронное соеденение. Т.е. добавь оцию adOpenAsync Выполнение продолжается в обычном порядке не дожидаясь результатов.Нов этом случае самому нужно ловить окончание процесса если необходимо получить результаты. Если через рекордсет то FetchComplete, FetchProgress ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 17:44 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Спасибо! А если у меня не возвращаются данные? "exec myproc" Тогда эти события не срабатывают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 18:01 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Если данные не возвращаются т.е. типа вставка или обновление то ИМХО неважно когда закончится выполнение, тут уже более инетесно знать что оно закончилось без ошибок . Вот их то и придется ловить. Т.е. В процедуре RaisError а на клиенте для запуска используя обьект SQLDMO он валяется в самом сервере Sqldmo.dll там создаешь сервер, коннектишься. И запускаешь(так же асинхронно) через процедуру ExecuteWithResultsAdnMessages. Делаешь обработчик его сообщений и все. Только обработчики надо делать для всех его событий иначе ошибка(это баг у них такой , сам мучался) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 18:13 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Ого! На самом деле у меня процедура всего лишь пересчитывает данные. Но не возвращает ничего. И приложению надо понимать когда показать новые результаты подсчета. Вот я и думаю, может возвратить одну строку оттуда (для простоты)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 18:28 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
А кстати, прервать выполнение запроса нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 18:33 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Можно возвратить типа Select 'OK' для простоты :) А прервать только из самой процедуры - RETURN, RaisEROR(Severity больше 16) Она ведь на деле просто ставится в очередь сапросов и клиент над ней власти не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 18:53 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Странно, но с select 'ok' не прошло! Все прекрасно работает (FetchComplete ловится) если у меня в запросе написано "select ....", но когда я меняю на требуемый "exec..." (процедуры в конце которой написано select 'ok') - событие не ловится! Больше ничего не меняю! Парадокс! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 19:05 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Из документации MSSQL я понял, что всетаки власть он имеет. Там написано что открыты 2 буфера обмена. Для получения данных и для отсылки команд. И по второму как раз и посылается break. Например SQL Server Query Analyser имеет кнопку Cancel executing, которая работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 19:12 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Глянь в профайлере, он идет как текст или RPC call? Попробуй добавить adCmdText, Хотя RPC более эффективен, но хз... Процедура с параметрами? Вот кстати никогда не пробовал прерывать выполнение. Вероятно все-таки возможно, но как в этом случае быть с тразакциями? Как в самой процедуре при прырывании вызвать Rollback? Можно в принципе после прерывания его руками делать из клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 20:09 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
Да вопрос о прерывании запроса старый похоже. Какие-то job-ы вроде можно запускать как вещали. Сам когда-то это делал спекулятивно за счет посылания заведомо некорректное данное и процедура или функция PL/SQL вываливалась по exception-у, который ловил и делал, что требовалось после прерывания запроса так, чтобы программа клиентская работала дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2003, 20:17 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
В результате, мне удалось сделать все - и асинхронность и прерывания! Я использую объект ADOCommand. Вызываю им хранимую процедуру (Execute). Этот объект имеет метод Cancel для прерывания. В свойствах я ему ставлю AsyncExecute. Но ловлю события ADOConnection к котому он привязан. А именно событие ExecuteComplete, реагируя на которое, проверяю на мой ли это объект command отработал. Так что теперь у меня живое окно "WAIT..." с анимацией, отсчетом времени и кнопкой "Cancel". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2003, 14:57 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
2Михаил А если нажали на Отмену? Как транзакции откарывать, если они запущены были из ХП? Очень интересуюсь сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 07:12 |
|
||
|
Паралич при выполнении запроса.
|
|||
|---|---|---|---|
|
#18+
2 Михаил А покажи, плиз, код ExecuteComplete. Интересен момент определения, что-же именно за команда отработала. А точнее, из какого компонента. Сам спрашивал тут как-то раз, но ответа не получил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 08:12 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=1963&tid=2115057]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 393ms |

| 0 / 0 |
