![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 не знаю.