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

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

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

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

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

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

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

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

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

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

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

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

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


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