|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Добрый день всем. Такой вопрос : Стоит сервер MSSQL 7.0, клиент написан на Delphi5 Если клиент выполняет длительный запрос, не могу показать пользователю индикатор выполнения запроса, или хотябы дать ему возможность прервать этот затянувшийся запрос. Буду благодарен всем, кто может подсказать, как решить данную проблему, или Хотя бы подскажет, как ее обойти. С уважением Виталий. e-mail: drVik@mail.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2000, 13:11 |
|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Можно использовать асинхронное или пакетное выполнение запроса. Если такой возможности нет или не знаешь, то можно поступить так: Заранее создать таблицу очередь запросов и таблицу результатов запроса. Для связи запроса и ответа необходимо в этих таблицах предусмотреть специальное поле. Выполнение запроса разделить на три чести: 1. Клиент помещает текст запроса в очередь запросов и переходит в режим ожидания (см. пункт 3) 2. Сервер периодически опрашивает очередь. Если в очереди есть текст запроса, то сервер удаляет этот запрос из очереди, выполняет и помещает результат в таблицу результатов. 3. Клиент периодически опрашивает таблицу результатов, и если результат есть, то забирает его и удаляет результат из таблицы результатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2000, 14:44 |
|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Попробуйте поэкспериментировать с потоками (класс TThread в Delphi). Иными словами, можно попытаться пустить запрос на выполнение в отдельном потоке программы и в случае большой задержки уничтожить этот поток. Правда скажу честно, что сам этого делать не пробовал. Но видел похожие примеры в каких-то книжках по Delphi (правда не помню в каких). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2000, 15:44 |
|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Не совсем понял, как все же прервать запрос, но попробую.. Спасибо за советы. Виталик. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2000, 13:01 |
|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Если Вы используете DB-LIBRARY, то Вы можете использовать dbcancel или dbcanquery (если Вы знаете указатель PDBPROCESS). Для ODBC Вы можете использовать SQLFreeStmt. (Подробности в BO) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2000, 10:43 |
|
Как прервать длительный запрос
|
|||
---|---|---|---|
#18+
Однозначно! Прервать запрос как и получить состяние запроса можно используя DB-Library, прерываение как в предыдущем послании, а состояние с помощью callback-функций, к сожалению нет SQL-book под рукой, но по моему dbresults. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2000, 03:49 |
|
|
start [/forum/topic.php?fid=46&fpage=3596&tid=1827567]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 382ms |
0 / 0 |