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

Вниз

Перехват ошибки от MSSQL Express 2005 (dbExpress)   Найти похожие ветки 

 
boristt   (2007-04-07 15:45) [0]

Ув. господа, подскажите как можно узнать код ошибки полученного от сервера SQL.
Для подкоючения исп. dbExpress.

После выполнения команды SQLConnection.ExecuteDirect(.....) например при вставке в табл. записи и при этом происх. дублировании перв. ключа, тогда появляется сообщ. об ошибке:

SQL State: 01000, SQL Error Code: 3621
SQL State: 23000, SQL Error Code: 2627

SQLConnection.ExecuteDirect возвращает 1, но это не то что надо.

Пока удалось поймать только сообщение-строку (написана выше) через перехват события Application.OnException

И в этой строке уже искать код ошибки (исполльзуя pos и т.п.). Неправильно как-то это.
Какой правильный способ есть? Подскажите лз, если таковой есть конечно.


 
boristt   (2007-04-09 19:38) [1]

Неужели нет способа? :\


 
Desdechado ©   (2007-04-10 11:39) [2]

А что ты хочешь на основании этого кода ошибки сделать?


 
boristt   (2007-04-10 20:28) [3]

Вывести конечному пользователю сообщение на русском. Что мол незя добавлять такую запись, ибо есть уже такая, например.

Т.е. ошибка 2627 - значит что происходит попытка дублирования перв. ключа. вот на основании её и делать обработчик.


 
boristt   (2007-04-10 20:32) [4]

Можно конечно делать проверку перед вставкой данных, но хотел обойтись без этого. Используя только ограничения созданные в базе.


 
boristt   (2007-04-10 20:41) [5]

Разобрался.
Сделать ещё один запрос к БД

SELECT @@ERROR

Тему можно закрывать.


 
sniknik ©   (2007-04-10 20:48) [6]

> Вывести конечному пользователю сообщение на русском.
как показывает практика "конечный" пользователь не читает сообщений об ошибках вообще..., а те редкие, компьютерно грамотные, что читают, те и на английском не брезгуют... и даже наоборот расстраиваются когда вместо оригинала им суют кривой перевод (я например всегда за оригинал, уж больно много проблем встречал, от аналогичных твоим "благий намерений", и именно ПРОБЛЕМ, которые если бы была нормальная ошибка были бы так мелким недоразумением).


 
Jan1   (2007-04-11 09:54) [7]


> SELECT @@ERROR

Читал:

Because @@ERROR gets a new value when every Transact-SQL statement completes, process @@ERROR in one of two ways:

Test or use @@ERROR immediately after the Transact-SQL statement.

Save @@ERROR in an integer variable immediately after the Transact-SQL statement completes. The value of the variable can be used later.



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

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

Наверх





Память: 0.46 MB
Время: 0.034 c
15-1180880346
Германн
2007-06-03 18:19
2007.07.08
Какая хорошая штука - Медовуха!


15-1181320184
YurikGL
2007-06-08 20:29
2007.07.08
Культурное наследие в связи?


2-1181652161
evgenij_
2007-06-12 16:42
2007.07.08
Shape


2-1181571361
molotok
2007-06-11 18:16
2007.07.08
что это такое и как с этим бороться?


4-1169737086
Nat
2007-01-25 17:58
2007.07.08
перехват данных, посылаемых на печать другой программой...





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