![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перехватить сообщение сервера?
Lika © (2003-05-06 14:23:00)Пишу клиент-серверное приложение, сервер-Firebird, компоненты доступа FIBPlus.
Подскажите пожалуйста, как можно перехватить сообщения сервера типа "...value"***null***" (т.е когда пользователь оставил не заполненным поле, которое не может быть null) и др. такого рода сообщения и выдыть свое на русском "значение ...должно быть заполнено" и т.д
В событие OnPostError не обрабатывает сообщения сервера, я пробовала.
Заранее всем спасибо!
Lika (2003-05-07 11:43:00) [1]TpFibErrorHandler то что нужно. Спасибо!
Danilka (2003-05-07 11:25:00) [2]Lika (07.05.03 10:44)
ну, во-первых, можно сделать так:
try
...
except
on e: Exception do begin
...
end;
end;
а в e.Message - будет сообщение об ошибке, разное для Null и дублирования, правда неудобно будет его анализировать.
но есть второй, более правильный вариант:
в FIBPlus есть компонет: TpFibErrorHandler, у него есть событие: OnFIBErrorEvent, который можно и обрабатывать.
В частности, в обработчик этого события передается код ошибки, он будет разный для ошибки Null и дублирования ключа.
Lika (2003-05-07 10:44:00) [3]>Danilka © (07.05.03 10:36)
пока писала предыдущее сообщение пришло твое.
> можно по-разному обработать в зависимости от ошибки, если null - то одно сообщение на экран вывести, дублирование уникального поля - другое сообщение.
Cогласна. С null вроде легче, а дублирование уникального значения,подскажи как?
Zacho (2003-05-07 10:43:00) [4]
> Lika (07.05.03 10:37)
Ну вот и обрабатывай EIBInterbaseError в try .. except или Application.OnException и вместо "Violation of Primary or UNIQUE key constraint .. " выводи свое сообщение или делай какие-либо другие действия.
Lika (2003-05-07 10:37:00) [5]Ну есть поле по которому стоит первичный ключ(т.е значения должны быть уникальны)и пользователь пытается ввести значение
которое нарушает уникальность(т.е запись с таким значение уже есть в таблице). Каждый раз делать поиск в таблице перед сохранением не хотелось бы.
Danilka (2003-05-07 10:36:00) [6]Lika (07.05.03 10:25)
для любых попыток, если не проходит запись, то возникает исключение, которое можно по-разному обработать в зависимости от ошибки, если null - то одно сообщение на экран вывести, дублирование уникального поля - другое сообщение.
Danilka (2003-05-07 10:36:00) [7]уникального значения а не поля :))
Zacho (2003-05-07 10:27:00) [8]
> Lika (07.05.03 10:25)
В смысле "уже существующего" ?
Lika (2003-05-07 10:25:00) [9]>Zacho © (07.05.03 10:16)
try
....
except
...
end;
при нажатии на кнопку сохранить для обработки Not null полей,
я делала вроде нормально.
А дя попытки ввода уже существующего значения?
Zacho (2003-05-07 10:16:00) [10]
> Lika (07.05.03 10:01)
try
....
except
...
end;
или Application.OnException
Lika (2003-05-07 10:01:00) [11]Ann © (06.05.03 16:41)
>так это же можно отлавливать и в клиентской части. Тот же ввод уже имеющихся значений..
Можно поподробнее?
HSolo (2003-05-06 17:35:00) [12]Я такие вещи перехватываю в Application.OnException
Или нужно непременно на уровне сервера?
Ann (2003-05-06 16:41:00) [13]так это же можно отлавливать и в клиентской части. Тот же ввод уже имеющихся значений..
Или дело в чем-то другом?
Lika (2003-05-06 16:33:00) [14]Дело в том что, я имею ввиду не только эту ошибку, например когда
пользователь пытается ввести значение которое уже существует в таблице(для поля по которому есть первичный ключ)и т.д
Хотелось бы какой нибудь общий способ, чтобы пользователю выходило диалоговое окно с сообщением написанным мной!
Ann (2003-05-06 16:09:00) [15]а почему сразу при вводе не проверять заполнено поле или нет?
Lika (2003-05-06 16:07:00) [16]Неужели никто мне не поможет!