Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1159634846
Скрываю ник
2006-09-30 20:47
2006.10.22
Изменить жизнь


4-1149788245
Steplerr
2006-06-08 21:37
2006.10.22
С консолью через хендл


15-1159766471
Бугага
2006-10-02 09:21
2006.10.22
FoxPro


8-1142958394
sco
2006-03-21 19:26
2006.10.22
Рисование меню.


3-1155875302
Rentgen
2006-08-18 08:28
2006.10.22
Kак пересортировать таблицу после изменения поля в самой таблице?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский