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