Форум: "Начинающим";
Текущий архив: 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