Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

Как перехватить ошибку из делфи после выполнения ХП   Найти похожие ветки 

 
romanich ©   (2005-10-29 20:07) [0]

Выполняю ХП на удаление записи. Появляется сообщение с кучей, не нужной для пользователя, информации, где суть такая: запись не может быть удалена так как на неё есть ссылка из другой таблицы.
Как перехватить и представить в удобоваримом виде?
БД MS SQL 2000, компонент TStoredProc
Спасибо.


 
Nikolay M. ©   (2005-10-29 20:33) [1]

Если СЦ поддерживается тригерами, сделать человеческое сообщение или перевести на русский таблицу sysmessages + try..except в Д.


 
sniknik ©   (2005-10-29 20:34) [2]

try
 ///выполнение
except
 ///ошибка
endl;

но вообщето это информация не для пользователя, а для тебя, чтобы ты мог исправить ХП и удалять записи в другом порядке (если уж в базе у таблиц есть внешние ключи)
и кстати " представлять в удобоваримом виде" не надо, лучше сохранить куданибудь в лог для последующего "разбора полетов" и для реальной инфы о проблеме (в случае работы проги удоленно от тебя).
потому как, как показывает практика, юзеры эти ошибки не читают (не видят в них смысла), в любом случае, в каком бы они виде они представлены не были бы. а те кто дорос до понимания, что читать их желательно, тот обычно и с английскими сообщениями разберется...


 
Anatoly Podgoretsky ©   (2005-10-29 20:37) [3]

sniknik ©   (29.10.05 20:34) [2]
Смысл то они видят, вот только интерпритировать не могут, какая то китайская грамота.


 
Desdechado ©   (2005-10-29 21:19) [4]

2 AP
Юзера вообще "эти окошки с одной кнопкой" игнорируют, особенно если нужна большая скорость работы. Многократно наблюдал картину, когда юзер знает, что в одном месте вылезет предупреждение (каждый раз возможно разное), однако он просто не глядя на экран жмет Enter 2 раза вместо одного.


 
Anatoly Podgoretsky ©   (2005-10-29 21:24) [5]

По другим форумам уже разобрались, ему просто нужны каскадные удаления, а он пытается заставить пользователей сделать это вручную.
Он задал этот вопрос в нескольких форумах.


 
sniknik ©   (2005-10-29 21:27) [6]

Anatoly Podgoretsky ©   (29.10.05 20:37) [3]
ну не знаю, нет у меня такого впечатления.
к примеру есть у меня наиболее частые сообщения об ошибке (свои, на русском. сам составлял, типа покороче и попонятней... (наивный был... ;))
"Не найден каталог обмена - "C:\xxxx\xxxx", проверьте его на существование, и создайте если необходимо..."
(то что необходимо, я уверен ;), но мало ли... поэтому так неопределенно. и конечно самбы мог создать, так делается при задании этого пути... но... тут еще есть программа с другого конца, и можно больше навредить "автоматизмом")
и еще
"Невозможно подключится к удаленной базе "Server\Base", отсутствует сетевое подключение. Проверьте состояние сети и перезапустите программу."
и знаете сколько народу нам поводу вот этих самых "ошибок" перезвонило уже? я даже сосчитать не могу ;)
так вот примерный порядок их действий.
- запуск проги. видит сообщение. не читая нажимает ok. звонит нам. "че за хрень, мы вам такие бабки платим а ваша прога не работает, приезжайте исправляйте."
и все. никаких чтений, ни попыток перестартовать, ни чтение лога (он прям на экране остается при ошибках, хотя оконное сообщение и снялось)
начинаеш выяснять, говориш читали? "ДА!!!" самым возмущенным тоном, просиш повторить что там было написано... в лучшем случае скажут "да какаято хрень" (читали бы то отвечали бы "да не найдена какаято хрень, непонятная").
и ладно бы были юзеры тупые, которым только только показали как комп включается, а нет, и админы бывают (по должности).
да чего далеко ходить. возмите этот форум, как часто приходится маломальски стоящую инфу о глюке, и текст ошибки из спрашивающих попросту клещами вытягивать? а после еше и получать снисходительное "ну если это важно... то вот вам", а то и вообше ничего. не видят смысла в предоставляемой в ошибке инфе. а ведь это программисты. "цвет компьютерного мира". ;) ну или желающие ими стать. а после берут (ну раз смысла не видно) и "русифицируют" - переводят целый клас ошибок как одно русское сообщение... в итоге под "ошибка файловой системы" может скрываться и отсутствие пути и нехватка прав на чтение/запись, и установленность ридонли  и т.д. зато по русски. ;-(


 
sniknik ©   (2005-10-29 21:37) [7]

да еще одно, насчет "бабок". имхо конечно, но почемуто впечатление такое, что самые "горластые" (а заодно и тупые. в смысле чтений сообщений) как раз таки денег и не платят... т.е. слышиш в трубке чтото вроде "мы вам такие бабки платим", смело иди в бугалтерию в 90% случаев у них неплатежи и задолжености (если снят с обслуживания то мы даже по телефону не должны им помогать, не говоря уже о выездах). в общем то в особо "вредных" случаях так и делают. но чаще конечно даже неплательщику проще сказать "создай удаленный тобой же путь" чем выяснять отношения.


 
Anatoly Podgoretsky ©   (2005-10-29 21:45) [8]

sniknik ©   (29.10.05 21:27) [6]
Ты не читал все остальные его сообщения, как он признался у них бардак в базе и надо удалить из справочника запись, а поскольку каскадное удаление не настроено он пытается это переложить на бабок. Удаление у него делается с помощью хранимой процедуры.
И сейчас ему надо как то получить список всех таблиц, где есть эти удаляемые записи (именно во множественном числе) вывалить это все одной не причастной бабке, что бы она искала всех остальных бабок, которые имеют право на удаление этих подчиненых записей, потом они сообщают первой бабке, что они все удалили и первая бабка теперь удаляет главную запись. При том удаление обязательно.

Вот такая ситуация в него на текущий момент.

В данной ситуации просто каскадного удаления будет не достаточно, надо будет еще вести лог, кто удалил и архив удаленных записей (понятно почему). Лог и архив не помешают на будущее в любом случае, конфликты на этой почве бывают серьезные. Причастные полность отпираются, валят все на программиста.


 
sniknik ©   (2005-10-29 22:03) [9]

> Причастные полность отпираются, валят все на программиста.
100% так и есть, они всегда отпираются ;о), но в данном случае (по описанному про бабок) это похоже оправданно.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.013 c
4-1129202576
Spellcaster
2005-10-13 15:22
2005.12.18
Собственный хинт в трее


14-1132921585
Pave/\
2005-11-25 15:26
2005.12.18
VMWare workstation. Проблема с сетью


14-1133126705
ПЕС
2005-11-28 00:25
2005.12.18
Подскажите компонент


1-1132244343
VEZ
2005-11-17 19:19
2005.12.18
Как програмно перевести определённый Node в TTreeView в состояние


3-1130768443
Term
2005-10-31 17:20
2005.12.18
Как выбрать только дубли





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский