Форум: "Базы";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
ВнизОбработка ошибки в гриде Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c