Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок не вызывается при выполнении browse - как обойти ? / 14 сообщений из 14, страница 1 из 1
16.09.2004, 10:31
    #32697018
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
Известна проблема VFP6 (да и других версий), что обработчик ошибок on error do ... не вызывается, пока активно окно browse. Если ошибка возникает в процедуре типа valid для поля - то обработчик вызывается. А если browse работает по обновляемому удаленному представлению и пытается сделать update для поля, а сервер возвращает ошибку, то VFP вываливает свое окно с надписью на английском языке про ошибку и кнопки OK и Revert. Все бы было ничего, но если не нажать Revert, то потом невозможно нормально ни приложения закрыть, ни саму среду VFP, так как при попытке закрытия курсора (use, close all и пр.) опять выдается оператор update, сервер возвращает ошибку, но VFP ее уже не ловит, а рассказывает что-то малопонятное. Как народ такую ситуацию обходит ?
...
Рейтинг: 0 / 0
16.09.2004, 10:49
    #32697074
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
речь идет по работу с удаленным представлением ?
...
Рейтинг: 0 / 0
16.09.2004, 10:51
    #32697078
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
если да то имеет смысл использовать буферизацию и транссакции
...
Рейтинг: 0 / 0
16.09.2004, 11:01
    #32697109
SergeyPl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
По-моему, в этом случае необходимо написать свою форму с использованием Grid и полным управлением всех событий от разработчика. Использовать стандартный BROWSE как-то не очень...
...
Рейтинг: 0 / 0
16.09.2004, 14:50
    #32697942
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
To Leaf:
>речь идет по работу с удаленным представлением ?
>если да то имеет смысл использовать буферизацию и транссакции

Да. Удаленное представление к серверу PostgreSQL. Транзакции делает сам сервер. Или Вы предлагаете отключить автотранзакции, а включить в Foxpro, чтобы клиент выдавал begin-commit ? А что это даст ?

To SergeyPl:
Есть куча (более 30) справочников, на каждый из которых писать форму с grid как-то влом ... А писать универсальную форму на справочники - еще более влом.
...
Рейтинг: 0 / 0
16.09.2004, 14:55
    #32697958
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
вот поэтому вы и не можете откатить свои изменения и зависаете в воздухе
з.ы. когда что-то в лом это плохо
...
Рейтинг: 0 / 0
16.09.2004, 18:29
    #32698596
SergeyPl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
strizhTo Leaf:
>речь идет по работу с удаленным представлением ?
>если да то имеет смысл использовать буферизацию и транссакции

Да. Удаленное представление к серверу PostgreSQL. Транзакции делает сам сервер. Или Вы предлагаете отключить автотранзакции, а включить в Foxpro, чтобы клиент выдавал begin-commit ? А что это даст ?

To SergeyPl:
Есть куча (более 30) справочников, на каждый из которых писать форму с grid как-то влом ... А писать универсальную форму на справочники - еще более влом.
В классических учебниках по ООП часто говорится, что иногда, на разработку одного нужного класса уходит времени гораздо больше, чем на использование этого класса в последствии более 30 раз :) Это я о том, что если пишем что-то путное, то написать форму для справочников сам Бог велел !
А если использовать BROWSE, то можно ничего не писать, а дать пользователям VFP и пусть работают :)
...
Рейтинг: 0 / 0
16.09.2004, 19:34
    #32698700
Chuveljov Andrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
strizhTo Leaf:
Есть куча (более 30) справочников, на каждый из которых писать форму с grid как-то влом ... А писать универсальную форму на справочники - еще более влом.
Посуди сам BROWSE это для совместимости. А в этом случае какие там события в Фоксе 2.0?

А класс всё таки напиши. Поможет и не раз.
...
Рейтинг: 0 / 0
17.09.2004, 13:25
    #32699769
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
Ладно-ладно. Убедили. Теперь скажите, как нормально в гриде обработать ошибку ODBC-соединения номер 1526 ? Нужно программно сделать revert, чтобы отменить изменения в поле.
...
Рейтинг: 0 / 0
17.09.2004, 13:56
    #32699879
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
ну вы с буферизацией и трансакциями разобрались
...
Рейтинг: 0 / 0
17.09.2004, 14:59
    #32700000
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
> ну вы с буферизацией и трансакциями разобрались
Вы имеете в виду, чтобы поставить свойство transaction в режим НЕАВТО ? Так тут одинаково. В какой не ставь - в логах все равно видно, что сначала идет begin, потом update, потом при ошибке rollback. И только после rollback VFP идет на ошибку. Причем, обработчик на событие error можно повесить только для грида, для конкретного столбца грида событие error с ошибкой ODBC не возникает. А дальше для грида - как узнать, для какого столбца возникла ошибка ? Обработчику в названии объекта передается сам грид. Фигня какая-то.
...
Рейтинг: 0 / 0
17.09.2004, 15:03
    #32700014
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
ну это про буферизацию
а про трансакции
например в случае неудачи откатить ее и все
а так у вас изменения остаются база подвисает
остается только правка вручную
...
Рейтинг: 0 / 0
17.09.2004, 15:23
    #32700061
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
У меня есть мечта: Чтобы новички, прежде чем задавать свой вопрос поискали аналогичные вопросы в конференции. Жаль, что мечта несбыточная.

1) Стратегия построчного редактирования данных в таблицах - в корне ошибочна. Имеется в виду, что у Вас открыта таблица, вы вносите изменения в одну строку таблицы и эти изменения тут же сбрасываются в исходные таблицы.

2) Если Вы хотите самостоятельно обрабатывать процесс возникновения ошибок, то надо самостоятельно управлять процессом сброса изменений на сервер. Имеется в виду, что нельзя отдавать системе сам процесс сброса изменений.

Следствия из всего этого:

1) На Remote View необходимо наложить режим табличной буферизации (5). По умолчанию, все View открываются в режиме строковой буферизации (3)

2) Сброс внесенных изменений производится только и исключительно по нажатии кнопки "Сохранить" в которой и подается команда вроде:

IF TableUpdate()=.F.
AERROR(laError)
* Анализ содержимого массива laError
ENDIF

PS: Большая просьба, воспользуйся поиском в данной конфе по упомянутым здесь ситуациям.
...
Рейтинг: 0 / 0
17.09.2004, 17:16
    #32700330
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок не вызывается при выполнении browse - как обойти ?
To ВладимирМ:
Спасибо, наконец-то разобрался ! Ключевыми здесь были TableUpdate() и TableRevert().
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок не вызывается при выполнении browse - как обойти ? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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