Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

Обработка ошибки в гриде   Найти похожие ветки 

 
koks ©   (2002-08-19 17:24) [0]

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

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

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


 
BoxTer ©   (2002-08-19 19:11) [1]

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

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

см. в хелп.


 
koks ©   (2002-08-20 10:33) [2]

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


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

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


 
koks ©   (2002-08-20 17:28) [4]

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

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


 
Val ©   (2002-08-20 17:40) [5]

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


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

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


 
koks ©   (2002-08-21 17:24) [7]

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


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

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


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

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


 
fool ©   (2002-08-21 18:30) [10]

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


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

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


 
koks ©   (2002-08-22 10:32) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-35662
Olorin
2002-09-02 10:29
2002.09.12
Как получить дескриптор окна..


14-35911
France
2002-08-20 08:37
2002.09.12
SoftIce 4 и SoftIce 4.0.5 А в чем разница???????????


1-35723
Борис
2002-09-02 09:22
2002.09.12
Защитить программу от множественного запуска по сети?


14-35863
BAY
2002-08-15 23:24
2002.09.12
Модемное соединение


1-35729
kull
2002-08-30 13:10
2002.09.12
Date dialog