Головна сторінка
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.56 MB
Час: 0.025 c
3-74565
Шаман
2002-12-03 17:21
2002.12.23
Значення поля кіт. було до поновлення в тригері FOR UPDATE


7-75017
dma77
2002-10-20 12:56
2002.12.23
Процедури COM порту (стандартні)


14-74983
Ketmar
2002-12-03 17:40
2002.12.23
де взяти вихідні для Q2 BSP Builder і супутніх tools?


14-74956
сатир
2002-12-02 21:04
2002.12.23
пропозиція додати до правил


7-75020
Gliph
2002-10-17 01:18
2002.12.23
Кнопки і іконки





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