Головна сторінка
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
намагатися
myADOTable.Post ();
крім
on E: EOleException do
MessageDlg (szMessage, mtError, [mbOK], 0);
end;
Список кодів помилок, які тобі поверне E.ErrorCode шукай в модулі OLEDB.PAS. Можна витягти більше інформації про помилку через myADOTable.Connection.Errors приблизно так (наводжу тільки частина except):
крім
on E: EOleException do
починати
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;
ще
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.55 MB
Час: 0.034 c
6-74863
кару
2002-06-13 19:41
2002.12.23
Пакети.


4-75045
Олександр
2002-11-10 11:13
2002.12.23
Чи можна вивантажити з пам'яті dll і як?


1-74728
Netcoder
2002-12-13 08:12
2002.12.23
Переклад TColor в HEX


7-75026
Aleksey Pavlov
2002-10-17 12:11
2002.12.23
root CIMV2 -> Win32_ *


14-74908
Фелікс
2002-11-30 21:49
2002.12.23
Альтернатива Mediaplayer?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська