📄 errorhandler.pas
字号:
unit ErrorHandler;
interface
uses
{$IFNDEF LINUX}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, Buttons, OdacVcl,
{$ELSE}
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, QButtons, OdacClx,
{$ENDIF}
Db, OraErrHand, DBAccess, Ora, MemDS, OraSmart, OdacDemoForm, OdacDemoFrame;
type
TErrorHandlerFrame = class(TOdacDemoFrame)
DBGrid: TDBGrid;
ToolBar: TPanel;
Splitter1: TSplitter;
ToolBar1: TPanel;
DBGrid1: TDBGrid;
dsDetail: TDataSource;
OraErrorHandler: TOraErrorHandler;
dsMaster: TDataSource;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
Panel2: TPanel;
btOpen: TSpeedButton;
btClose: TSpeedButton;
DBNavigator: TDBNavigator;
quMaster: TOraQuery;
quDetail: TOraQuery;
procedure btOpenClick(Sender: TObject);
procedure btCloseClick(Sender: TObject);
procedure OraErrorHandlerError(Sender: TObject; E: Exception;
ErrorCode: Integer; const ConstraintName: String; var Msg: String);
public
procedure Initialize; override;
procedure SetDebug(Value: boolean); override;
end;
implementation
uses
{$IFNDEF VER130} { Delphi 6 or higher }
Variants,
{$ENDIF}
OraError;
{$IFDEF CLR}
{$R *.nfm}
{$ENDIF}
{$IFDEF WIN32}
{$R *.dfm}
{$ENDIF}
{$IFDEF LINUX}
{$R *.xfm}
{$ENDIF}
procedure TErrorHandlerFrame.btOpenClick(Sender: TObject);
begin
quMaster.Open;
quDetail.Open;
OraErrorHandler.Active:= True;
end;
procedure TErrorHandlerFrame.btCloseClick(Sender: TObject);
begin
quMaster.Close;
quDetail.Close;
end;
procedure TErrorHandlerFrame.OraErrorHandlerError(Sender: TObject; E: Exception;
ErrorCode: Integer; const ConstraintName: String; var Msg: String);
begin
if E is EOraError then
case ErrorCode of
1005: Msg:= 'Need password';
1017: Msg:= 'Invalid username or password';
12203: Msg:= 'Need server name';
end;
end;
procedure TErrorHandlerFrame.Initialize;
begin
inherited;
quMaster.Connection:= Connection;
OraErrorHandler.Session:= Connection as TOraSession;
quDetail.Connection := Connection;
end;
procedure TErrorHandlerFrame.SetDebug(Value: boolean);
begin
quMaster.Debug:= Value;
quDetail.Debug := Value;
OraErrorHandler.Debug:= Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -