powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как поймать ошибку в OnDeleteError событии TOraQuery
9 сообщений из 9, страница 1 из 1
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740791
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использовании ODAC (EhLib) на уровне события сессии TOraSession всё проcто:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TForm1.OSessionError(Sender: TObject; E: EDAError; var Fail: Boolean);
var
  StrErrorCode: string;
begin
  StrErrorCode := IntToStr(E.ErrorCode);
  ShowMessage(StrErrorCode);
  ShowMessage('Ошибка на уровне БД: ' + E.Message);
end;



Как быть на уровне экземпляра TOraQuery
Код: pascal
1.
procedure TForm1.OMyQueryDeleteError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);



т.е. как поймать ошибку например?:
Код: plsql
1.
ORA-02292 
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740814
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdamAry,

Ловите OraSession.OnError - там ошибка E:EDAError - в ней есть код оракловый
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740819
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub,
это я знаю, но мне нельзя использовать события TOraSession (OraSession.OnError).

Мне необходимо вытащить ошибку именно из
procedure TForm1.OMyQueryDeleteError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
из E, если быть более точным.
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740838
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

событие OnDeleteError возникает при ошибке удаления при вызове метода OraQuery.Delete.
Если в OraQuery вы задали явное удаление, т.е.

Код: pascal
1.
OraQuery.SQL.Text := 'DELETE FROM ......';



то ошибку нужно ловить либо в событии OraSession.OnError либо в блоке try...except

Код: pascal
1.
2.
3.
4.
5.
6.
  try
    OraQuery.Execute;
  except
    on e: EOraError do
      ShowMessage(IntToStr(e.ErrorCode) + ': ' + e.Message);
  end;
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740891
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devart,
удаление не явное, а через
Код: pascal
1.
HorzScrollBar, через ExtraPanel, nbDeleteEh.



Нельзя использовать событие
Код: pascal
1.
OraSession.OnError 



Надо использовать событие
Код: pascal
1.
TOraQuery OnDeleteError.
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740914
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdamArydevart,
удаление не явное, а через
Код: pascal
1.
HorzScrollBar, через ExtraPanel, nbDeleteEh.



Нельзя использовать событие
Код: pascal
1.
OraSession.OnError 



Надо использовать событие
Код: pascal
1.
TOraQuery OnDeleteError.



Объясните пожалуйста, просто в целях образования, почему Session нельзя использовать?
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39740968
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

При удалении через DBGridEh extraPanel, при возникновении ошибки событие OraQuery.OnDeleteError вызывается, и ошибка приходит корректно.
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39741006
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devart,
как получить номер ошибки из?:
Код: pascal
1.
procedure TForm1.MyOraQueryDeleteError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);


из
Код: pascal
1.
E: EDatabaseError


из
Код: pascal
1.
E
...
Рейтинг: 0 / 0
Как поймать ошибку в OnDeleteError событии TOraQuery
    #39741023
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

Проверить что класс ошибки EOraError, привести E к EOraError, и смотреть свойство ErrorCode

Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.OraQueryDeleteError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
if E is EOraError then
  ShowMessage(IntToStr(EOraError(E).ErrorCode))
end;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как поймать ошибку в OnDeleteError событии TOraQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]