Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.028 c