Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-35867
Феликс
2002-08-17 17:02
2002.09.12
Прикольно. Я 4 не распознал.


1-35672
dolmat
2002-08-30 13:19
2002.09.12
Как открыть и распечатать в Dos кодировке


3-35537
AndbyOne
2002-08-21 11:52
2002.09.12
Вставится много записей?


3-35609
ShuraGrp
2002-08-22 16:28
2002.09.12
TDataSet.Open приводит к тому, что все поля Visible = false


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский