aleX_SAS_ |
Отправлено: 08.09.2004, 13:59 |
|
Не зарегистрирован
|
Отлавливание специфических ошибок ADO
компилятор c++ builder 6.0
на форме лежит ADOConnection,DataSource1, ADOQuery, и ADOCommand
существует код для вставки определенных данных в Оракловские таблицы:
AnsiString SQ = Edit1->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(SQ);
ADOQuery1->ExecSQL();
по одной кнопке, и
AnsiString SQ = Edit1->Text;
ADOCommand1->CommandText = SQ;
ADOCommand1->Execute();
по другой
на onExecuteComplete висит обработчик:
Memo1->Lines->Add(IntToStr(RecordsAffected));
switch (EventStatus){
esOK: logOut("esOK");break;
esErrorsOccured:logOut("esErrorsOccured");break;
esCantDeny:logOut("esCantDeny");break;
esCancel:logOut("esCancel");break;
esUnwantedEvent:logOut("esUnwantedEvent");break;
};
плюс к тому висит обработчик Эксепшнов
void __fastcall TForm1::onExeptionHandle(TObject *Sender, Exception *E)
{
AnsiString errCode;
errCode = (AnsiString(E->ClassName())+" !!!-> "+ E->Message);
logOut("err: "+errCode);
}
TForm1::logOut(AnsiString mess)
{
Memo1->Lines->Add(mess);
}
void __fastcall TForm1::onCreateForm(TObject *Sender)
{
Application->OnException = onExeptionHandle;
}
В общем, жизнь прекрасна
Екзерсис первый:
в edit1 — insert into zu (kn,knr) values (11,55)
реакция и по Command и по Query идентичнa
-1 -- recordAffected
esOK -- event status
err: EOleException !!!-> ORA-00942: table or view does not exist
в общем то что и требовалось доказать, добавляем имя схемы:
Екзерсис второй:
insert into RAGZK.zu (kn,knr) values (11,55)
-1
esOK
err: EOleException !!!-> ORA-20282: Неправильный кад. номер
ORA-06512: at "RAGZK.ZU_BEF_INS", line 15
ORA-04088: error during execution of trigger 'RAGZK.ZU_BEF_INS'
поймали, сработал триггер, полет нормальный...
Екзерсис третий:
insert into RAGZK.zu ( SQF, DELIM, KNR, KN, KDKV_KNR) values ( '4,5', '0', 288, 268, 288)
0
esOK -- !!!!!!!!
ноль записей вставлено, состояние ок, почему?
стартуем SQL*plus, подсовываем ту же строку,
SQL> insert into RAGZK.zu ( SQF, DELIM, KNR, KN, KDKV_KNR) values ( '4,5', '0', 288, 268, 288)
2
SQL> /
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "RAGZK.ZU_BEF_INS", line 23
ORA-04088: error during execution of trigger 'RAGZK.ZU_BEF_INS'
вуаля, сработал тот-же триггер, но возврата никакого.
Внимание, вопрос, откуда можно выдернуть информацию о результате прохождения определенной команды?
Сие требуется для генерации лога, и чем детальнее информация, тем лучше.
Заранее благодарствую.
P.S. сорри за большую длину послания |
|
|