unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids,
ZConnection, ZDataset, ZDbcIntfs;
type
TForm1 = class(TForm)
Conn: TZConnection;
DBGrid1: TDBGrid;
dsZQ1: TDatasource;
ZQ1: TZQuery;
ZQ1apellido_persona: TStringField;
ZQ1cedula_persona: TLargeintField;
ZQ1email_persona: TStringField;
ZQ1fec_reg_persona: TDateField;
ZQ1fnac_persona: TDateField;
ZQ1genero_persona: TStringField;
ZQ1nombre_persona: TStringField;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
procedure TratarExcepciones (sender: tObject; E : Exception); procedure ManejarExcepcion (DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.ManejarExcepcion (DataSet: TDataSet; E: EDatabaseError;
var DataAction: TDataAction);
Var
codigo_error : Integer;
str_Mensaje : String;
str_codigo_er : String;
begin
codigo_error := EZSQLException(E).ErrorCode;
str_Mensaje := EZSQLException(E).Message;
str_codigo_er := IntToStr(codigo_error);
case codigo_error of
1048 : str_Mensaje := 'Columna no puede ser nula';
1061 : str_Mensaje := 'nombre de clave duplicado';
1062 : str_Mensaje := 'Entrada duplicada para clave';
end;
MessageDlg ('Se ha producido un error.'+#13#10+'Error Nro.:'+str_codigo_er+#13#10+str_Mensaje , mtError,
[mbOk],0);
DataAction:=daFail;
end;
procedure TForm1.TratarExcepciones (sender: tObject; E:Exception);
Var
codigo_error : Integer;
str_codigo_er : String;
str_Mensaje : String;
begin
codigo_error := 0;
str_codigo_er := '';
if (E is EZSQLException)
then begin
codigo_error := (E AS EZSQLException).ErrorCode; str_codigo_er := IntToStr(codigo_error);
str_Mensaje := (E AS EZSQLException).Message;
case codigo_error of
1045 : str_Mensaje := 'Acceso denegado para usuario. revise nombre y clave';
1046 : str_Mensaje := 'Base de datos no seleccioanda';
1146 : str_Mensaje := 'Tabla No existe';
end;
MessageDlg ('Se ha producido un error.'+#13#10+'Error Nro.:'+str_codigo_er+#13#10+str_Mensaje , mtError,
[mbOk],0);
exit;
end;
if (E is EConvertError)
then begin
str_Mensaje := (E AS EConvertError).Message;
MessageDlg ('Se ha producido un error.'+#13#10+'Error Nro.:'+str_codigo_er+#13#10+str_Mensaje , mtError,
[mbOk],0);
exit;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ZQ1.OnPostError:= @ManejarExcepcion;
Application.OnException := @TratarExcepciones;
ZQ1.Open;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
ZQ1.Close;
end;
end.