gracias Marcoszorrilla por la gran ayuda que has brindado...
aqui pongo el codigo que puse dentro de mi Modulo de Datos para cada una de las tablas que tengo en mi aplicacion..
Código Delphi
[-]
unit Modulo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;
Procedure midberror(DataSet: TDataSet; E: EDatabaseError);
type
TDM = class(TDataModule)
DsEmpleados: TDataSource;
TbEmpleados: TTable;
Database: TDatabase;
DsDepartamentos: TDataSource;
DsPuestos: TDataSource;
TbDepartamentos: TTable;
TbPuestos: TTable;
DsDirecciones: TDataSource;
TbDirecciones: TTable;
DsEspecialidades: TDataSource;
TbEspecialidades: TTable;
TbDireccionesId_Direccion: TStringField;
TbDireccionesDireccion: TStringField;
TbDepartamentosId_Departamento: TStringField;
TbDepartamentosId_Direccion: TStringField;
TbDepartamentosDepartamento: TStringField;
TbPuestosId_Puesto: TStringField;
TbPuestosPuesto1: TStringField;
TbPuestosPuesto2: TStringField;
TbPuestosSueldoDiario: TFloatField;
TbPuestosDespensa: TFloatField;
TbEspecialidadesId_Especialidad: TStringField;
TbEspecialidadesEspecialidad: TStringField;
procedure TbEmpleadosPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure TbEspecialidadesPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
procedure TbDireccionesPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure TbDepartamentosPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
procedure TbPuestosPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
public
end;
var
DM: TDM;
Const
eKeyViol = 9729;
eRequiredFieldMissing = 9732;
eForeignKey = 9733;
eDetailsExist = 9734;
eSqlGralerror = 13059;
eInvalidTime = 10058;
eInvalidDate = 75;
EinvalidDateTime=10060;
eRegisterLocked= 10241;
implementation
{$R *.dfm}
Procedure midberror(DataSet: TDataSet; E: EDatabaseError);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
Application.MessageBox('Imposible dar alta ese registro ya existe','Atención',mb_Ok + mb_IconQuestion);
Abort;
end;
if (E as EDBEngineError).Errors[0].Errorcode = eRequiredFieldMissing then
begin
Application.MessageBox('Imposible dar alta hay un campo vacio.','Atención',mb_Ok + mb_IconQuestion);
Abort;
end;
if (E as EDBEngineError).Errors[0].Errorcode = eSqlGralerror then
begin
Application.MessageBox('Imposible dar alta hay un campo requerido vacío.','Atención',mb_Ok + mb_IconQuestion);
Abort;
end;
end;
procedure TDM.TbEmpleadosPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
MiDbError(TbEmpleados, e);
end;
procedure TDM.TbEspecialidadesPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
MiDbError(TbEspecialidades, e);
end;
procedure TDM.TbDireccionesPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
MiDbError(TbDirecciones, e);
end;
procedure TDM.TbDepartamentosPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
MiDbError(TbDepartamentos, e);
end;
procedure TDM.TbPuestosPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
MiDbError(TbPuestos, e);
end;
end.
funciona y manda los mensajes
gracias y un saludo....