Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу поймать EDatabaseError [D4, Paradox]


Vlad40 ©   (2004-02-25 14:34:00) 

Помогите, плз. При отсутствии значения в поле Required TTable происходит exception и выводится соответствующее сообщение с именем поля. Я хочу заменить стандартное сообщение на свое, но поймать exception я не могу. Ни блок try, ни что другое не помогает. Наверное это просто, но не могу поймать... Заранее спасибо.


Vlad40   (2004-02-26 11:49:00) [1]


> Ross

Данная ошибка (незаполнение требуемого поля) не порождает событие OnPostError. Поэтому Ваше предложение не подходит. Но проблема уже решена


Ross   (2004-02-25 18:07:00) [2]

Vlad40   (25.02.04 14:53) [4]

procedure TDM.tblProducersPostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
  E.Create('My error');
  Dataset.cancel;//Отменяет изменение
end;


Vlad   (2004-02-25 16:17:00) [3]


> Vlad40   (25.02.04 16:14) [17]

Я предлагал тебе простой и удобный вариант, ты сам себе задачу усложнил


Vlad40   (2004-02-25 16:14:00) [4]

Пользователю ест-но не надо. Мне надо. Ладно, это уже не важно.


Val   (2004-02-25 16:06:00) [5]

>Vlad40   (25.02.04 16:05) [14]
а зачем пользователю видеть ваше fieldname?


Val   (2004-02-25 16:06:00) [6]

>Vlad40   (25.02.04 16:05) [14]
а зачем пользователю видеть ваше fieldname?


Vlad40   (2004-02-25 16:05:00) [7]

Кстати в сообщении указывается не имя поля, а DisplayName


Vlad40   (2004-02-25 16:03:00) [8]

Спасибо, не надо ;-). Думал, есть другие методы.


Val   (2004-02-25 16:02:00) [9]

При отсутствии значения в поле Required TTable происходит exception и выводится соответствующее сообщение с именем поля.
???


DenK_vrtz   (2004-02-25 16:01:00) [10]

Field 'NAME' must have a value

как разобрать строку надуюсь объяснять не надо? :)


Vlad40   (2004-02-25 15:56:00) [11]

Еще вопрос - а есть ли возможность определить, какое поле вызвало это исключение?


Vlad40   (2004-02-25 15:19:00) [12]


> Vlad ©   (25.02.04 15:14) [8]

Нет, ну так проверять можно что угодно, это понятно. Хотелось использовать стандартные средства

> DenK_vrtz ©   (25.02.04 15:07) [7]

Спасибо, про это забыл. То, что надо


Vlad   (2004-02-25 15:14:00) [13]


> Vlad40   (25.02.04 15:01) [6]

Таки на OnPostError не попадаем ?
Есть более простой вариант: на событие BeforePost для всех полей которые Required проверять заполнены они или нет, если нет, выдавать ругательский мессадж


DenK_vrtz   (2004-02-25 15:07:00) [14]

см.

Application.OnException
Application.ShowException


Vlad40   (2004-02-25 15:01:00) [15]

И что это мне дало? Единственное что изменилось, это не происходит выхода в среду Delphi в режиме отладки. А остальное без изменения. Мне же надо вставить свое сообщение при возникновении exception


Vlad   (2004-02-25 14:58:00) [16]

delphi>tools>debugger options>language exceptions
убрать флажок stop on delphi exceptions


Vlad40   (2004-02-25 14:53:00) [17]

Может я что-то не так делаю. В обработчике пишу

procedure TDM.tblProducersPostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
   ShowMessage('My error');
   Action:=daAbort;
end;

Ставлю точку останова. Не останавливается и выдает стандартное сообщение


Zacho   (2004-02-25 14:48:00) [18]

Не знаю. У меня - работает.


Vlad40   (2004-02-25 14:41:00) [19]

Пробовал OnPostError и т.п. Проскакивает без всякой реакции


Zacho   (2004-02-25 14:37:00) [20]

См. TDataSet.OnPostError и т.п.


Наверх

Титульная страница Поиск, карта сайта Написать письмо