Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

Обработка 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1146655911
Vetas
2006-05-03 15:31
2006.05.21
Печать Tchart


8-1135068009
avlan
2005-12-20 11:40
2006.05.21
Вырезать кусок из видео


2-1146324731
AlexanderMS
2006-04-29 19:32
2006.05.21
Более оптимальный код


2-1146489024
Golik
2006-05-01 17:10
2006.05.21
отчет QuickRep !


15-1146044448
Rule
2006-04-26 13:40
2006.05.21
Компания Borland приглашает 11 мая на семинар в Киеве





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