Ver Mensaje Individual
  #5  
Antiguo 18-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Independientemente de lo comentado por vtdeleon Comprueba esto:

doble clic a tu tabla tuser. En algún campo tienes la propiedad Required a True?, en delphi.

Si lo tienes, (casi seguro que si) entonces el error de clave duplicada es un EdatabaseError, por eso no entra en el except que tienes puesto.

Puedes poner a ese campo el Required a false, y dejar en tu base de datos Required a True; así si funcionará con el código actual.

Otro tema más grave, es que estas capturando cualquier error de tipo EDBEngineError. El error concreto de violacion de claves es: Integrity Violation

9729 : Key violation.
(en internet buscando por "BDE ERROR CODES", seguro que encuentras el listado completo).

La comprobación correcta será:
Código Delphi [-]
  if (E is EDBEngineError) then
    with EDBEngineError(E).Errors[0] do     
    if ErrorCode = 9729 then
    begin
       // tu mesage box

    end
  else
    raise;

Edito: Faltaba poner .Errors[0] para acceder a ErrorCode, Gracias carlos

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

Última edición por Lepe fecha: 20-06-2005 a las 18:11:17. Razón: Código Incompleto.
Responder Con Cita