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

Вниз

Error   Найти похожие ветки 

 
Ann ©   (2003-06-03 10:55) [0]

Добрый день!
Уважаемые, может кто подскажет, как отловить ошибку которую выдает система, и выдавать свою?
например при вводе новой записи в НД.
Подскажите пожалуйста


 
Соловьев ©   (2003-06-03 10:57) [1]

try
a := b/0;
except
ShowMessage("Деление на ноль");
end


 
Stas ©   (2003-06-03 10:59) [2]

Var E:EDataBaseError;
begin
......
E.Message:="Ошибка!!!"
......
end;


 
Zacho ©   (2003-06-03 11:01) [3]

Например, повесить свой обработчик на Application.OnException
Или так:
try
DataSet.Post;
except
on E:Exception do ShowMessage("Мое сообщение"+E.Message);
end;


 
Ann ©   (2003-06-03 11:02) [4]

Дело втом, что у меня ввод новой записи осуществляется в гриде, но записываю я через хранимую процедуру. Так вот, если пользователь начал вводить новую запись, но не ввел ее до конча и потом пытается переместиться на другую запись, то выдается ошибка, так вот я не могу понять где ее ловить и как вставить свой комментарий


 
Zacho ©   (2003-06-03 11:08) [5]


> Ann © (03.06.03 11:02)

Тогда или в TDataSet.OnPostError или в Application.OnException


 
Соловьев ©   (2003-06-03 11:09) [6]


> но не ввел ее до конча

дата?

TField.OnValidate
Occurs just before the data is written to the record buffer.


 
Ann ©   (2003-06-03 11:19) [7]

Соловьев © (03.06.03 11:09)
да.. только не на дату а на ID
и как выйти из этой ситуации?


 
Zacho ©   (2003-06-03 11:24) [8]


> Ann © (03.06.03 11:19

А чем не устраивает OnPostError ?


 
Соловьев ©   (2003-06-03 11:25) [9]

обрабатывай событие нужного поля OnValidate:
procedure TForm1.Table1IDValidate(Sender: TField);
begin
if (Sender as TField).AsInteger > 10 then ShowMessage("Вы ввели ID больше 10");
end;


 
Ann ©   (2003-06-03 11:43) [10]

Соловьев © (03.06.03 11:25)
пишет вот что

[Error] Undeclared identifier: "ShowMessage"


 
Соловьев ©   (2003-06-03 11:44) [11]

uses + Dialogs;


 
Ann ©   (2003-06-03 11:54) [12]

в procedure TForm1.Table1IDValidate(Sender: TField);
вообще не заходит :(
а если вешаю обработку на OnPostError то сначала идет системная ошибка, потом моя, потом опять системная.. почему так?


 
Stas ©   (2003-06-03 11:59) [13]

Напиши код


 
Zacho ©   (2003-06-03 11:59) [14]


> Ann © (03.06.03 11:54)

Приведи код обработчика OnPostError


 
Соловьев ©   (2003-06-03 12:00) [15]

procedure TForm1.Table1IDValidate(Sender: TField);
begin
if (Sender as TField).AsInteger > 10 then
begin
Raise Exception.Create("Id не может быть больше 10");
end;


 
Ann ©   (2003-06-03 12:01) [16]

Ошибку пишет следующую
Validation error for column dcena2_id, value "***null***"

а пишу вот что
procedure TDM.FDS_jur_docDCENA2_IDValidate(Sender: TField);
begin
if (Sender as TField).AsInteger=Null then ShowMessage("Сохраните запись");
end;


 
Соловьев ©   (2003-06-03 12:03) [17]


> Sender as TField).AsInteger=Null

заменить на Sender as TField).IsNull


 
Zacho ©   (2003-06-03 12:07) [18]


> Соловьев © (03.06.03 12:03)

Sender as TField вообще не нужно, Sender и так TFiled.

> Ann © (03.06.03 12:01)

Насколько я понимаю, в случае если юзер ничего не введет в поле dcena2_id то OnValidate для этого поля не вызовется.


 
Соловьев ©   (2003-06-03 12:09) [19]


> Насколько я понимаю, в случае если юзер ничего не введет
> в поле dcena2_id то OnValidate для этого поля не вызовется.

если у поля свойство Required=true, вызовется.


 
Sandman25 ©   (2003-06-03 12:12) [20]

BeforePost

IF Table1.FieldByName("ID").isNull then
Raise exception.Create("Вы не ввели ID");


 
Ann ©   (2003-06-03 12:13) [21]

Соловьев © (03.06.03 12:09)
поставила у Required=true, выдает вот что
Field dcena2_id must have a value



 
Ann ©   (2003-06-03 12:18) [22]

Sandman25 © (03.06.03 12:12)
выдает сообщение, но перед ним ругается вот так
raised exception class exception mith message "Вы не ввели ID"


 
Соловьев ©   (2003-06-03 12:19) [23]


> Ann © (03.06.03 12:13

ну а что надо? на русский перевести? ну так лови этот ексепшн. Разве в OnValidate не ловится?


 
Sandman25 ©   (2003-06-03 12:33) [24]

Так уберите Required в False и будет только Ваша ругань.


 
Zacho ©   (2003-06-03 12:38) [25]

Дополню: а если вызывать exception не надо, то в Sandman25 © (03.06.03 12:12) raise ... заменить на ShowMessage(...)


 
Ann ©   (2003-06-03 12:45) [26]

Всем огромное спасибо за помощь!


 
Nikolay M. ©   (2003-06-03 14:22) [27]

ИМХО, лучше повесить на триггер перед вставкой генерацию своего Exception-a, ловить его в try..except и выдавать текст Exception-a пользователю



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

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

Наверх




Память: 0.52 MB
Время: 0.019 c
7-84773
Анатолий.
2003-04-16 18:22
2003.06.26
Как перетянуть с помощью Drag and Drop обьект в другое приложение


1-84389
NAlexey
2003-06-09 13:10
2003.06.26
Перерисовка неклиентской области.


1-84171
Михайлов Антон
2003-06-11 01:40
2003.06.26
Drag&Drop


1-84369
[BAD]Angel
2003-06-16 23:17
2003.06.26
Помогите с ListBox


14-84710
Soft
2003-06-04 16:03
2003.06.26
Языки программирования