Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.043 c
1-84294
Duby
2003-06-15 12:31
2003.06.26
Запись из StringGrid а


1-84397
YuraKiller
2003-06-07 22:18
2003.06.26
Как обнулить таймер?


14-84727
nick-from
2003-06-05 14:17
2003.06.26
DBF


1-84178
Yakudza
2003-06-07 20:52
2003.06.26
destAddress := PInAddr(pHostEn^.h_addr_list^)^;


8-84462
sherlock
2003-03-15 18:06
2003.06.26
Чтение MP3 файлов.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский