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

Вниз

Обработка сообщений сервера   Найти похожие ветки 

 
xenon   (2002-12-04 15:46) [0]

Здравствуйте.
Еcть DBGrid + TADOTable + MSSQL
Когда в гриде в носится значение, противоречащее ограничениям целостности БД, сервер выдает соответствующее сообщение.
Пользователь, соответственно, пугается всего, что написано не по-русски.
Вопрос: каким образом можно перехватить ошибку в клиенте и обработать ее?


 
asmith   (2002-12-04 16:14) [1]

Для работы с ADO лови EOleException
try
myADOTable.Post();
except
on E : EOleException do
MessageDlg(szMessage, mtError, [mbOK], 0);
end;
Список кодов ошибок, которые тебе вернет E.ErrorCode ищи в модуле OLEDB.PAS. Можно извлечь больше информации об ошибке через myADOTable.Connection.Errors примерно так (привожу только часть except):
except
on E : EOleException do
begin
with Connection.Errors[0] do
case E.ErrorCode of
DB_E_INTEGRITYVIOLATION :
case NativeError of
MSSQL_E_CONSTRAINT_VIOLAT_INS : szMessage := strCannotDeleteRecordMessage;
MSSQL_E_CONSTRAINT_VIOLAT_DEL : szMessage := strUniqueViolationMessage;
end;
DB_E_ERRORSINCOMMAND : szMessage := Description;
else
szMessage := Format(strGeneralDatabaseError, [Description, NativeError]);
end;
MessageDlg(szMessage, mtError, [mbOK], 0);
end;
end;
Здесь коды DB_E_INTEGRITYVIOLATION, DB_E_ERRORSINCOMMAND взяты из OLEDB.PAS, а коды MSSQL_E_CONSTRAINT_VIOLAT_INS, MSSQL_E_CONSTRAINT_VIOLAT_DEL взяты из доки по MSSQL (BOL). Таким образом, ADO может в общем выдать ошибку о нарушениицелостности данных и мы подсунем свою месагу. Но если этого мало - попросим сервер вернуть больше данных (NativeError) и уточним, было ли это при вставке или удалении.


 
xenon   (2002-12-04 16:33) [2]

> лови EOleException
В каком месте его ловить?
UpdatePatch и Post нигде явно не вызываются.


 
asmith   (2002-12-04 18:18) [3]

Не обратил внимание на то, что у тебя редактирование через DBGrid, sorry! Все, что можно делать - ловить события OnEditError, OnPostError для TADOTable, но простора для маневра много меньше.


 
xenon   (2002-12-05 09:58) [4]

Понял. Спасибо!



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

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

Наверх





Память: 0.45 MB
Время: 0.008 c
14-74983
Ketmar
2002-12-03 17:40
2002.12.23
где взять исходники для Q2 BSP Builder и сопутствующих tools?


4-75035
BadBoy.Sergey
2002-11-10 01:02
2002.12.23
Как вызвать окно


6-74871
Mikel
2002-09-04 20:09
2002.12.23
Download


1-74714
Noname_
2002-12-13 16:25
2002.12.23
Двоичная константа


1-74819
Wolverin
2002-12-11 16:46
2002.12.23
Печать





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