Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизПерехватить ошибку Key violation Найти похожие ветки
← →
иван8511 (2006-08-25 15:51) [0]Подскажите, пожалуйста, как отследить (перехватить) ошибку Key violation. Т.е. чтоб не выскакивало окно с предупреждение и кнопкой ОК, а самому обработать это событие. Например, чтоб программа автоматически эту запись удалила, без предупреждения.
Спасибо.
← →
Sergey13 © (2006-08-25 15:53) [1]> Например, чтоб программа автоматически эту запись удалила,
> без предупреждения.
Чужую программу этому не обучишь, а в своей - кто мешает предусмотреть такую ситуацию?
← →
Anatoly Podgoretsky © (2006-08-25 15:56) [2]except
← →
evvcom © (2006-08-25 16:10) [3]> [0] иван8511 (25.08.06 15:51)
> Например, чтоб программа автоматически эту запись удалила,
> без предупреждения.
Вообще так не хорошо в большинстве случаев. Пользователь должен знать, что он чего-то не то делает.
← →
Anatoly Podgoretsky © (2006-08-25 16:37) [4]Конечно не хорошо, но каждый ССЗБ
← →
иван8511 (2006-08-25 16:48) [5]Я согласен. Вот поэтому и спрашиваю как мне перехватить эту ошибку и вместо (непонятного для простого пользователя) сообщения Key violation написать свое по русски типа "Вы ввели неправильий (повторяющийся) номер записи", а потом эту неправильную запись очистить и предложить ввести по новому.
← →
Sergey13 © (2006-08-25 16:51) [6]> [5] иван8511 (25.08.06 16:48)
А не пробовал в принципе не допускать такую ситацию. Например перед потенциально опасным действием сделать соответствующую проверку.
← →
иван8511 (2006-08-25 16:55) [7]А как ее сделать? Тем более если таблица большая? Все равно надо снача попытатьмя записать а потом если не получится принимать меры
← →
ANB © (2006-08-25 16:57) [8]
> иван8511 (25.08.06 16:55) [7]
Сначала выполнить запрос на дубль. Если чего вернет - ругаться и не давать вставлять.
Или перехватывай ошибку и выводи вместо нее свой текст.
← →
StriderMan © (2006-08-25 16:59) [9]что вы человека мучаете
try
тут код где появится ошибка
except
тут делаешь что-то в случае ошибки
end;
← →
StriderMan © (2006-08-25 16:59) [10]end
забыл
← →
Sergey13 © (2006-08-25 17:00) [11]> [7] иван8511 (25.08.06 16:55)
Такая логика допустима, ИМХО, если процент неудачных попыток очень невелик. Если допустим это ввод юзера, то лучше проверить заранее.
← →
Anatoly Podgoretsky © (2006-08-25 17:02) [12]Sergey13 © (25.08.06 16:51) [6]
Sergey13 © (25.08.06 17:00) [11]
Не гони его в болото.
Бессмысленная операция
← →
иван8511 (2006-08-25 17:24) [13]Спасибо.
try
тут код где появится ошибка
except
тут делаешь что-то в случае ошибки
end;
Работает.
← →
Sergey13 © (2006-08-28 09:05) [14]> [12] Anatoly Podgoretsky © (25.08.06 17:02)
В смысле? Предпроверка - болото?
← →
evvcom © (2006-08-28 09:12) [15]Дык, key violation -то парадокс выдает? Запись же и так не добавится. Не надо будет ничего удалять. try except, имхо, вполне достаточно.
← →
Anatoly Podgoretsky © (2006-08-28 12:30) [16]Sergey13 © (28.08.06 09:05) [14]
Конечно, ее полезность стремится к нулю, право на существование имеет только в однопользовательской среде.
← →
Sergey13 © (2006-08-28 13:01) [17]> [16] Anatoly Podgoretsky © (28.08.06 12:30)
Теоретически может быть. Практически - не вижу причин не использовать, особенно если предпроверяемая операция достаточно дорогая.
← →
Anatoly Podgoretsky © (2006-08-28 13:58) [18]Можешь использовать, только все равно потом все проверки по полной, как и без нее.
← →
Sergey13 © (2006-08-28 14:02) [19]> [18] Anatoly Podgoretsky © (28.08.06 13:58)
Да, это так, но иногда бывает выгодно.
← →
Anatoly Podgoretsky © (2006-08-28 14:16) [20]Приведи пример, когда будет выгодно А+Б против Б, с приведением кода конечно.
← →
Sergey13 © (2006-08-28 14:32) [21]> [20] Anatoly Podgoretsky © (28.08.06 14:16)
Я ж говорю - если операция Б дорогостоящая, как и ее откат, то если после аперации А отсеется 99.9% заведомо непроходных вариантов, то не вижу причин ее не делать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c