Главная страница
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.018 c
1-35793
Егор
2002-08-27 18:19
2002.09.12
Сложение.


1-35647
new_pahan
2002-09-01 18:59
2002.09.12
Можно ли изменять состояние пунктов в верхнем меню в чужой проге?


14-35851
AL2002
2002-08-16 11:08
2002.09.12
Это много?..


1-35785
ЮРИЙ_К
2002-08-30 11:40
2002.09.12
В Гриде определенные столбцы редактируемые


1-35704
Юрко
2002-09-02 14:31
2002.09.12
Работа с большими текстовыми файлами