Ver Mensaje Individual
  #5  
Antiguo 14-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Los errores dependen de tus componentes de acceso, yo uso los mdo y capturo los errores así:
Código Delphi [-]
  if (e is EMDOError) then
  begin
    strDebug := 'SqlCode: ' +inttostr(EMDOError(E).SQLCode) + espacio + E.ClassName;
    strMessage:=EMDOError(E.Message);

Por el SQLCode, puedes saber qué tipo de error es. Existe un listado de esos números en www.firebird.com.mx

El mejor sitio para capturar el error, sería el OnPostError de tu dataset. En algunos casos, en el propio mensaje de error, dice que se viola la restricción "PK_CLIENTES_1", ese nombre lo verás en el Ib Expert, en las restricciones de esa tabla (Constraints, secondary indices, etc).

Además de lo anterior, en un ApplicationsEvents.OnException puedes añadir mensajes que ocurren para casos generales.

Dicho de otra forma, escribes código en el OnPostError para los mensajes de clave primaria. Si se viola una restricción UNIQUE, el código lo escribes en el ApplicationsEvents informando con un mensaje más general:"El valor introducido ya existe en la base de datos".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita