|
|
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги, может быть кто сталкивался с такой проблемой. Есть клиент-серверное приложение vfp9+MSSQL. При выполнении достаточно долгой хранимой процедуры, клиент на фоксе как бы подвисает. Это понятно и естественно, т.к. хранимая процедура выполняется в синхронном режиме и клиент дожидается окончания ее выполнения. Проблема заключается в том, что если кликнуть мышкой на окно "подвисшего" фокса, то визуальная область окна закрашивается в белый цвет, а к заголовку главного окна приписывается надпись "not responding", хотя приложение работает и процедура выполняется. Можно ли как-нибудь "отключить" фокс от реакции нажатий мышью в момент выполнения ХП, чтобы экран не закрашивался в белый цвет, а остался прежним. И при этом чтобы пользователь мог переключиться в другое виндовое приложение. Как сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 10:50:43 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
Не уверен, но, возможно, поможет такое: Код: plaintext 1. 2. 3. Если на форме есть визуальные ActiveX, то их надо сделать невидимыми Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 11:55:23 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, это было опробовано в первую очередь. Странно, никто разве с таким не сталкивался ? Или у всех ХП всегда очень быстро работают ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 13:18:47 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
У тебя альтернатива использовать ADO для запуска хранимой процедуры в асинхронном режиме или самому поместить запуск запроса через ODBC в потоке, через библиотеку FLL. Я тут помоему выкладывал такую или на FoxClub. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 13:28:18 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
Варианты 1. выполнить ХП в асинхронном режиме с прогрессбаром 2. выполнение ХП передать в COM-сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 13:46:51 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
PaulWistВарианты 1. выполнить ХП в асинхронном режиме с прогрессбаром 2. выполнение ХП передать в COM-сервер как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 14:43:20 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
sanya_tir PaulWistВарианты 1. выполнить ХП в асинхронном режиме с прогрессбаром 2. выполнение ХП передать в COM-сервер как это сделать? 1. http://www.caws.atnet.ru/vfox/sql5.html - ф-ия SQL_COMMAND 2. http://www.foxclub.ru/sol/index.php?act=view&id=248 - пример использования COM.EXE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 14:56:34 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
На каком фоксе работаете , Сэр ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:18:14 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
PaulWistВарианты 1. выполнить ХП в асинхронном режиме с прогрессбаром 2. выполнение ХП передать в COM-сервер Вариант 1 будет работать раза в 2-3 медленнее, что неприемлимо Вариант 2 как из пушки по воробьям :) Проблема кстати насущная, у меня часто возникают ситуации, когда юзер немножко подождет, пока идет выполнение, а потом начинает судорожно кликать мышкой в окне фокса, в итоге получая либо белый фон, либо not responding, хватает трубку и начинает мне звонить - мол прога твоя висит. В идеале было бы сделать так, чтобы хп выполнялась и косяков на экране бы не было. Может мышку ему на время выполнения ХП отключать, чтобы кликать не мог ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:22:55 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
авторВариант 2 как из пушки по воробьям :) не понял - это почему, и что здесь такого сверхтрудного, вызвать метод СОМ-сервера и дождаться его окончания, зато юзеру когда он начнет нервничать можешь выдать сообщение - "не дёргайся, ещё не вечер" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:27:01 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
PaulWist, а ты надеешься , что RPC обеспечит тебе отдельный поток , да ? :) Нифига не так. Хоть на клиенте , хоть на сервере, для таких случаев нужно обеспечивать свой поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:32:45 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
luser Давайте более уважительно, не имел удовольствия выпиать с Вами на брудершафт. В данном случае, необходимо решить конкретную проблему, если Вы потрудитесь загрузить указанное решение по п.2. то поймёте, что данное решение снимет проблему "зависания" фокса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:39:13 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
ОК. 1) Только Вы моросите полнейшую чушь. В данном случае ему поможет асинхронный запрос, который не поддерживаеться ODBC, а использованием ADO в которм поддерживаеться( но тут человек нужно перестраивать всю технологию обработки данных) 2) Написание (получение) библиотеки, которая выполнить скрипт фокса в потоке и маякнет о начале выполнения и окончании собитиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:46:14 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
Программизд ®[quot PaulWist]Варианты 1. выполнить ХП в асинхронном режиме с прогрессбаром ... Вариант 1 будет работать раза в 2-3 медленнее, что неприемлимо Ну это не совсем так... А точнее совсем не так :) Если хранимая процедура именно выполняет код на сервер, а не возвращает на клиент большой набор данных, то никакого снижения скорости выполненя хранимой процедуры не будет. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:53:17 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
luser 1) Только Вы моросите полнейшую чушь. В данном случае ему поможет асинхронный запрос, который не поддерживаеться ODBC, а использованием ADO в которм поддерживаеться( но тут человек нужно перестраивать всю технологию обработки данных) А с чего вы взяли, что ODBC не поддерживает ассинхронные запросы? А как же: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:57:00 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
Я думаю он это пробовал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 15:58:06 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
К тому же при таком подходе, все время нужно смотреть, что там с результатом, закончилась операция или нет. А это значит, либо цикл, либо таймер. Первое , даже с Doevent опять снижает производительность, второе засирает системную очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 16:06:25 |
|
||
|
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
|
|||
|---|---|---|---|
|
#18+
2 Програмизд А вот так если сделать 1. wait wind 'Ждите. Выполнение операции может потребовать значительного времени.' nowait do хр. процедура wait clear - пользователь наверно по русски читать умеет. и не совсем идиот. 2. Оптимизировать хр процедуру что бы не занимала много времени. 3. Разбить выполнение хр. процедуры на несколько этапов (подпрограмм) с выдачей промежуточных данных в программу фокса - и отображением чего то чтобы пользователь видел что программа что то делает. заодно и экран можно принудительно refresh-ить что бы белого окна небыло. PS я конечно в MSSQL не спец прошу сильно не бить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 08:53:23 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33419947&tid=1592853]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
204ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 534ms |

| 0 / 0 |
