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

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

Обработка ошибки в гриде [D5, IB6.x]


koks ©   (2002-08-19 17:24:00) 

Уважаемые мастера - подскажите, под вечер крыша едет..
Редактирую под гридом таблицу IB. (через TIBTable).
Форма используется в основном для ввода данных. В таблице 5 полей, на которых при создании таблицы были наложены ограничения not null.

Ситуация: юзер вводит поле1, переходит к полю2,
вводит поле2, переходит к полю3,
вводит поле3... и - хвать - мышкой попал куда-то мимо редактируемой записи.
Естейственно сервер выдает Exception.... вся прога вылетает.
Как сделать так, чтобы программа не вылетала... а просто выдавала предупреждение об ошибке.
че-то торможу - в какую сторону копать.

Заранее спасибо


koks   (2002-08-22 10:32:00) [1]

Спасиба огромное...


@lex   (2002-08-21 18:38:00) [2]

fool прав. Именно так и делай.


fool   (2002-08-21 18:30:00) [3]

procedure TFrmMain.IBTable1BeforePost(DataSet: TDataSet);
begin
if (IBTable1.FieldByName("любое").AsХХХ ->проверка любого условия )then
begin
Application.MessageBox("введи значение поля!",
"внимание!",
MB_OK+MB_ICONWARNING);
Abort;
end;
end;


Mike Kouzmine   (2002-08-21 17:53:00) [4]

В стандартном гриде есть onColExit или что-то в этом роде. Может и в этом есть что-то подобное


Ученик   (2002-08-21 17:44:00) [5]

>koks © (21.08.02 17:24)
Странно, а у меня работает, а если просто запустить Exe-ник, может это сообщение показывается в Delphi, т.е. в отладке ?


koks   (2002-08-21 17:24:00) [6]

Сделал: воз и поныне там - я так сам пробовал.
Вылетает: SIZE_ID must have a value... SIZE_ID - это поле, мимо которого "промахнулся" юзер - см пред...
Вот тут-то и не понятно, что делать.


Ученик   (2002-08-20 18:02:00) [7]

procedure TForm1.IBTable1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Action := daAbort;
ShowMessage("Ошибка")
end;


Val   (2002-08-20 17:40:00) [8]

Post отменить - SysUtils.Abort


koks   (2002-08-20 17:28:00) [9]

уто понятно, что на BeforePost... только вот как в этом обработчике сам Post отменить.....

И еще - как грамотно обрабатывать Exception- ы сервера, чтобы программа не вылетала...


Val   (2002-08-20 10:38:00) [10]

>koks © (20.08.02 10:33)
...грид пытается его запостить САМ!...
а куда он его постит...?
значит куда можно проверочку-то поставить? может как раз там, куда он(Grid) пытается постить, да еще перед тем как он будет постить?


koks   (2002-08-20 10:33:00) [11]

Да это я и так знаю - но где его ставить....
Когда юзер вылетает с редактируемой строки грид пытается его запостить САМ! как и где он это делает я не знаю. Я использую QuantumGrid.
Предполагаю что надо как-то обработать BeforePost, но как...


BoxTer   (2002-08-19 19:11:00) [12]

Ты сам оветил на свой вопрос.
Перехватывай этот "exception"

try
....
exception
...
finally...

см. в хелп.


Наверх

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