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

Вниз

Обработка EDataBaseError   Найти похожие ветки 

 
Alex7   (2006-05-04 12:20) [0]

Уважаемые мастера!

Обработку исключения EDataBaseError
я провожу примерно так:

// E.Message: "Field value required."#$D#$A"Field: Cname"
//            "Key violation."#$D#$A"Index: name"

procedure Izv_DBEr(pTbl: TTable; E: String);
Var r1: Integer; r2: String;
begin
 r1 := Pos(".", E);
 r2 := Trim(Copy(E, 1, r1)); // Текст ошибки
 If r2= "Key violation." Then MessageBox ("Эти данные уже вводились!);
 If r2 = "Field value required." Then  MessageBox ("Введите реквизит......");;
 Abort;
end;

Это плохой вариант, но как сделать лучше ?
Где можно посмотреть перечень возможных "E.Message"
для EDataBaseError ?. Думаю, что есть и другие
Потом, наверное, их можно идентифицировать
не только текстовым сравнением (например, по какому-то коду) ?
Подскажите, пожалуйста. Спасибо.


 
Сергей М. ©   (2006-05-04 13:23) [1]

см. DBConsts.pas


 
Alex7   (2006-05-04 16:28) [2]

Посмотрел. "Своих"  E.Message там
не нашел. Есть только один формат
на эту тему:
SFieldRequired = "Field "%s" must have a value".
Ну и что?


 
Loginov Dmitry ©   (2006-05-04 16:32) [3]

А чем текстовое сравнение не устраивает? Хорошо хоть так проверить тип ошибки можно.


 
Сергей М. ©   (2006-05-04 16:34) [4]


> Ну и что?


То что в этом случае впору обратить свой взор на регулярные выражения


 
Alex7   (2006-05-04 20:51) [5]

>А чем текстовое сравнение не устраивает?
Хорошо, если сообщений другого вида нет,
а как это проверить.
> обратить свой взор на регулярные выражения
Не понял.


 
Сергей М. ©   (2006-05-05 09:06) [6]

http://www.rsdn.ru/article/alg/regular.xml


 
Alex7   (2006-05-05 19:14) [7]

Просмотрел рекомендованную статью о
регулярных выражениях.
 Если я правильно понял, то это совет
найти в Delphi  модуль, где приведены
используемые
E.Message: "Field value required."#$D#$A"Field: Cname"
//            "Key violation."#$D#$A"Index: name".

К сожалению, (видно в силу моей недостаточной квалификации)
средствами Windows XP я не смог найти найти эти
тексты. (тексты в других папках находятся, а в Delphi-нет.
Хотя я задавал режимы поиска в системных и закрытых файлах).
 Так что решения пока нет. Спасибо.


 
ANB ©   (2006-05-05 19:27) [8]


> Alex7   (04.05.06 12:20)

Вариант 1)
проверять корректность данных до их посылки в базу, чтобы исключения были именно исключениями.
Вариант 2) самому понаступать на грабли, поймать эти исключения и переписать их текст. По идее, у них еще и коды есть.


 
Loginov Dmitry ©   (2006-05-05 20:45) [9]

ИМХО, тут пользоваться регулярными выражениями - что из пушки по воробьям.
Вполне достаточно старого доброго Pos().


 
Сергей М. ©   (2006-05-06 11:12) [10]


> Loginov Dmitry ©   (05.05.06 20:45) [9]


Ну в целом - да. Можно и Pos() обойтись.
Но зато это дает общее решение подобных задач, которые могут в дальнейшем возникнуть, ну и теория+практика в новой (для автора) технологии тоже, думаю, будет иметь немалую ценность.


> Alex7   (05.05.06 19:14) [7]


> найти в Delphi  модуль


Да что его искать ?
DBConst.pas он называется (см. [1])


 
Desdechado ©   (2006-05-06 11:50) [11]

А я бы вообще не стал переводить, а выдавал бы ошибки как есть.
По крайней мере разработчику потом легче понять причину.

А вот во избежание "глупых" сообщений типа "не заполнено обязательное поле" сделать умолчательные значения, которые сразу использовать в программе.


 
Loginov Dmitry ©   (2006-05-06 12:01) [12]

Desdechado ©   (06.05.06 11:50) [11]
вот во избежание "глупых" сообщений типа "не заполнено обязательное поле" сделать умолчательные значения, которые сразу использовать в программе.


Так а если поле обязательное + уникальное, тогда что?


 
Desdechado ©   (2006-05-06 13:40) [13]

но здесь сообщение уже не датасетовское, а от СУБД будет

проверять до сохранения, например


 
Alex7   (2006-05-06 14:52) [14]

>Сергей М.
>Да что его искать ?
>DBConst.pas он называется (см. [1])

Так нет в DBConst текста "Field value required" и
"Key violation." тоже нет см.2


 
ANB ©   (2006-05-06 15:42) [15]


> Alex7   (06.05.06 14:52) [14]

Писал же уже.
1) Это ошибки приехавшие от СУБД
2) Желательно проверит все на клиенте (в том числе и запросами к БД), чтобы ошибок не возникало
3) Если лень проверять - наступи на все возможные грабли, собери список ошибок и обработай их.

В результате все равно должно получиться так, что ошибок от СУБД пользователь видеть не должен, а если вылезла незнакомая - пусть сообщит тебе.


 
Сергей М. ©   (2006-05-06 16:32) [16]


> Alex7   (06.05.06 14:52) [14]


Какие СУБД-компоненты используешь при этом ?


 
Alex7   (2006-05-06 17:08) [17]

>Какие СУБД-компоненты используешь при этом ?
Paradox.
Кроме того см. 7



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

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

Наверх




Память: 0.51 MB
Время: 0.032 c
4-1140602600
voe
2006-02-22 13:03
2006.05.21
Нужна помощь с WinRAR`ом


2-1146410086
Officeman
2006-04-30 19:14
2006.05.21
Сортировать числа от "min" к "max" (или наоборот)


2-1147026747
Ksenom
2006-05-07 22:32
2006.05.21
Возможно интересный вопрос по указателям )


15-1145625398
recordPlay
2006-04-21 17:16
2006.05.21
С помошью какой программы можно записать RealOne Player файл?


2-1146338578
NEchto
2006-04-29 23:22
2006.05.21
Названия файлов