Главная страница
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.044 c
2-1159774356
Mishenka
2006-10-02 11:32
2006.10.22
Работа с выделенными записями в DbGrid


3-1156418446
Виталий Юрьевич
2006-08-24 15:20
2006.10.22
ADO_TABLE и DBGRID - проблема с отображением информации


15-1159036932
AnCo
2006-09-23 22:42
2006.10.22
TMS AdvStringGrid


15-1159540793
Ringo
2006-09-29 18:39
2006.10.22
Есть контакт!


9-1137705694
ZilonAtakuit
2006-01-20 00:21
2006.10.22
Прозрачность, текстура