Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Firebird + FIBPlus - обработка ошибок подключения [D7, Firebird 1.5.2]


Yrtimd ©   (2005-11-17 00:30:00) 

// Delphi 7, FIBPlus 6.25, Firebird 1.5.2

Try
 DB.Open; // DB: TpFIBDatabase
Except
 on EFIBError do begin
   MessageDlg ('Какая-то ошибка!');
 end;
End;

Используя данный код, при ошибке подключения к БД, нельзя  установить конкретную причину (нет связи с сервером, автоизация, не найдена база данных и пр.).
Как обрабатывать ошибку, чобы выявить конкретную причину?


Yrtimd   (2005-11-18 00:10:00) [1]

А откуда узнать значения кодов ?..


YuRock   (2005-11-17 22:32:00) [2]

Автор, читай, что тебе пишут.

EFIBError.IBErrorCodeи EFIBError.SQLCodeты думаешь просто так, ради объема тебе привели в примере?


Yrtimd   (2005-11-17 20:44:00) [3]

Спасибо. Но необходимо не получить описание ошибки, а дифференцировать обработчик исключения таким образом:
case E of
 сервер не найден: do ...
 база не найдена: do ...
 ошибка авторизации пользователя: do ...
end;


Виталий Панасенко   (2005-11-17 10:38:00) [4]

EFIBError                  = class(EDatabaseError)
 private
   FSQLCode: Long;
   FIBErrorCode: Long;
   FSQLMessage :string;
   FIBMessage  :string;
   SenderObj :TObject;
 public
   constructor Create(ASQLCode: Long; const aMsg: String;Sender:TObject);
   constructor CreateEx(ASQLCode: Long; const IBMsg,SQLMsg: String;Sender:TObject);
   property    SQLCode    : Long read FSQLCode ;
   property    IBErrorCode: Long read FIBErrorCode ;
   property    SQLMessage :string read FSQLMessage;
   property    IBMessage  :string read FIBMessage;
 end;


YuRock   (2005-11-17 10:29:00) [5]

В IBX делается так:

Try
DB.Open; // DB: TpFIBDatabase
Except
on E: EIBError do Err( Format( 'ErrorCode: %d, SQLErrorCode: %d, Error: "%s"', [ E.IBErrorCode, E.SQLCode, E.Message ] ) );
End;


Может, поможет... В FIB не знаю.


Наверх

Титульная страница Поиск, карта сайта Написать письмо