powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
18 сообщений из 18, страница 1 из 1
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33418795
Фотография Программизд ®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги, может быть кто сталкивался с такой проблемой. Есть клиент-серверное приложение vfp9+MSSQL. При выполнении достаточно долгой хранимой процедуры, клиент на фоксе как бы подвисает. Это понятно и естественно, т.к. хранимая процедура выполняется в синхронном режиме и клиент дожидается окончания ее выполнения. Проблема заключается в том, что если кликнуть мышкой на окно "подвисшего" фокса, то визуальная область окна закрашивается в белый цвет, а к заголовку главного окна приписывается надпись "not responding", хотя приложение работает и процедура выполняется. Можно ли как-нибудь "отключить" фокс от реакции нажатий мышью в момент выполнения ХП, чтобы экран не закрашивался в белый цвет, а остался прежним. И при этом чтобы пользователь мог переключиться в другое виндовое приложение. Как сделать ?
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419036
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен, но, возможно, поможет такое:

Код: plaintext
1.
2.
3.
_SCREEN.LockScreen = .T.
* Выполнение ХП
_SCREEN.LockScreen = .F.

Если на форме есть визуальные ActiveX, то их надо сделать невидимыми

Код: plaintext
1.
2.
3.
4.
5.
_SCREEN.LockScreen = .T.
ThisForm.MyTree.Visible = .F.
* Выполнение ХП
ThisForm.MyTree.Visible = .T.
_SCREEN.LockScreen = .F.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419373
Фотография Программизд ®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, это было опробовано в первую очередь. Странно, никто разве с таким не сталкивался ? Или у всех ХП всегда очень быстро работают ? :)
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419407
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя альтернатива использовать ADO для запуска хранимой процедуры в асинхронном режиме или самому поместить запуск запроса через ODBC в потоке, через библиотеку FLL. Я тут помоему выкладывал такую или на FoxClub.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419471
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты

1. выполнить ХП в асинхронном режиме с прогрессбаром
2. выполнение ХП передать в COM-сервер
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419670
sanya_tir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistВарианты

1. выполнить ХП в асинхронном режиме с прогрессбаром
2. выполнение ХП передать в COM-сервер

как это сделать?
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419715
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419825
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На каком фоксе работаете , Сэр ?
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419844
Фотография Программизд ®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistВарианты

1. выполнить ХП в асинхронном режиме с прогрессбаром
2. выполнение ХП передать в COM-сервер

Вариант 1 будет работать раза в 2-3 медленнее, что неприемлимо
Вариант 2 как из пушки по воробьям :)

Проблема кстати насущная, у меня часто возникают ситуации, когда юзер немножко подождет, пока идет выполнение, а потом начинает судорожно кликать мышкой в окне фокса, в итоге получая либо белый фон, либо not responding, хватает трубку и начинает мне звонить - мол прога твоя висит. В идеале было бы сделать так, чтобы хп выполнялась и косяков на экране бы не было. Может мышку ему на время выполнения ХП отключать, чтобы кликать не мог ?
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419863
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВариант 2 как из пушки по воробьям :)

не понял - это почему, и что здесь такого сверхтрудного, вызвать метод СОМ-сервера и дождаться его окончания, зато юзеру когда он начнет нервничать можешь выдать сообщение - "не дёргайся, ещё не вечер"
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419886
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist, а ты надеешься , что RPC обеспечит тебе отдельный поток , да ? :)
Нифига не так. Хоть на клиенте , хоть на сервере, для таких случаев нужно обеспечивать свой поток.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419913
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luser

Давайте более уважительно, не имел удовольствия выпиать с Вами на
брудершафт.

В данном случае, необходимо решить конкретную проблему, если Вы потрудитесь загрузить указанное решение по п.2. то поймёте, что данное решение снимет проблему "зависания" фокса.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419947
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК.
1) Только Вы моросите полнейшую чушь. В данном случае ему поможет асинхронный запрос, который не поддерживаеться ODBC, а использованием ADO в которм поддерживаеться( но тут человек нужно перестраивать всю технологию обработки данных)
2) Написание (получение) библиотеки, которая выполнить скрипт фокса в потоке и маякнет о начале выполнения и окончании собитиями.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419969
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программизд ®[quot PaulWist]Варианты

1. выполнить ХП в асинхронном режиме с прогрессбаром
...
Вариант 1 будет работать раза в 2-3 медленнее, что неприемлимо

Ну это не совсем так... А точнее совсем не так :) Если хранимая процедура именно выполняет код на сервер, а не возвращает на клиент большой набор данных, то никакого снижения скорости выполненя хранимой процедуры не будет.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419982
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luser
1) Только Вы моросите полнейшую чушь. В данном случае ему поможет асинхронный запрос, который не поддерживаеться ODBC, а использованием ADO в которм поддерживаеться( но тут человек нужно перестраивать всю технологию обработки данных)

А с чего вы взяли, что ODBC не поддерживает ассинхронные запросы?
А как же:
Код: plaintext
SQLSETPROP(lhServer, 'Asynchronous', .T.)
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33419988
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю он это пробовал :)
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33420029
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же при таком подходе, все время нужно смотреть, что там с результатом, закончилась операция или нет. А это значит, либо цикл, либо таймер. Первое , даже с Doevent опять снижает производительность, второе засирает системную очередь.
...
Рейтинг: 0 / 0
Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
    #33421146
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Програмизд
А вот так если сделать
1.
wait wind 'Ждите. Выполнение операции может потребовать значительного времени.' nowait
do хр. процедура
wait clear
- пользователь наверно по русски читать умеет. и не совсем идиот.
2. Оптимизировать хр процедуру что бы не занимала много времени.
3. Разбить выполнение хр. процедуры на несколько этапов (подпрограмм) с выдачей промежуточных данных в программу фокса - и отображением чего то чтобы пользователь видел что программа что то делает. заодно и экран можно принудительно refresh-ить что бы белого окна небыло.

PS я конечно в MSSQL не спец прошу сильно не бить.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как "заморозить" окно фокса при выполнении долгой ХП MSSQL ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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