PDA

Ver la Versión Completa : como capturar error de registro duplicado


ajmr81
13-10-2006, 22:22:59
necesito poder capturar el error cuando se trata de ingresar un registro a la base de datos y este exista, alguien me puede orientar en como hacerlo.

roman
13-10-2006, 22:42:04
¿Ya probaste el evento OnPostError del dataset que estés usando?

// Saludos

maeyanes
13-10-2006, 22:42:46
Una forma:


try
DataSet.Post
except
on E: Exception do
// Aquí verificas el tipo de excepción...
end;


Ahora, si no especificas que tipo de base de datos usas, no te podremos ayudar más...



Saludos...

kalimero
17-10-2006, 10:36:07
Hola.
Pues como te comenta Roman, y suponiendo que uses Firebird y los componentes FibPlus, en el evento OnpostError puedes colocar un procedimiento (o sin procedimiento) tal como:

procedure TdmDatos.InformaError(E:EDatabaseError);
begin
Case EIBError(E).IBErrorCode of
isc_unique_key_violation:
begin
MessageDlg(E.Message +
'CLAVE DUPLICADA',mteRROR,[mbOk], 0);
end
else
begin
showmessage(inttostr(EIBError(E).IBErrorCode));
end;
end;
end;

isc_unique_key_violation es una constante con el codigo de error que te devuelve el servidor correspondiente a la clve duplicada. Si quieres controlar otros codigos de error, en IbErrorCodes.pas tienes el (creo recordar..).
No olvides añadir a las uses : Ib,IbErrorCodes.

Saludos