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

Вниз

Перехватить ошибку 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
2-1159890909
aries
2006-10-03 19:55
2006.10.22
Подключение к БД Access


15-1159441824
Алхимик
2006-09-28 15:10
2006.10.22
Комсомолец


3-1156424790
ttt_111
2006-08-24 17:06
2006.10.22
Общий доступ к таблице.


15-1159783478
Slider007
2006-10-02 14:04
2006.10.22
С днем рождения ! 1 октября


15-1159415891
vajo
2006-09-28 07:58
2006.10.22
Intel продемонстрировала 80-ядерный суперпроцессор будущего