Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Control de error (https://www.clubdelphi.com/foros/showthread.php?t=24248)

silviodp 12-08-2005 17:10:19

Control de error
 
Como puedo controlar el siguiente error:
"raised exception class EDBEngineError with message 'key violation' " ??
Si esta pregunta ya fue hecha y respondida me podrian poner el link de donde está?, gracias.-

delphi.com.ar 12-08-2005 17:33:04

Si quieres evitar que se produzca el error, puedes previamente validar tus datos para comprobar que no violen ninguna constraint. Simplemente haciendo consultas, tipo:
Código SQL [-]
SELECT 1
FROM TABLA
WHERE ID = :NEWID
Si esta consulta retorna al menos un registro, significa que ya hay un registro con ese ID.

Saludos!

silviodp 12-08-2005 17:40:04

Control de error
 
Si esa forma está barbara, pero a mi me gustaría hacerlo con Excepciones..., me explico??

dec 12-08-2005 18:08:32

Hola,

Cita:

Empezado por silviodp
Si esa forma está barbara, pero a mi me gustaría hacerlo con Excepciones..., me explico??

¿Te refieres a informar al usuario con una excepción? ¿Pues porqué no usas lo que te dice Federico y, en caso necesario, haces algo como esto?

Código Delphi [-]
 raise Exception.Create('Alto, te equivocaste, amigo...');

Lepe 12-08-2005 18:26:40

Busca en el foro por "ekeyviol" y darás directo con el tema que buscas
(quizás tengas que buscar en los antiguos foros).

Un saludo

ContraVeneno 12-08-2005 19:56:48

Código Delphi [-]
Try
 //aqui haces lo que tenga que hacer
Except on E:Exception do //podría ser E:EdbEngineError tu decides 
 if (E is EDBEngineError) then 
  with EDBEngineError(E).Errors[0] do 
   if ErrorCode = 9729 then begin 
    //aqui tu forma de tratar el problema, ya se aun mensaje, 
    //una acción, un beep, lo que tu creas conveniente.
   end else 
    //si fue algun otro # de error que no esperabas, mostrar la excepción.
    raise; 
 else
  //en caso que no sea un EDBEngineError, mostar el error.
  raise;
end; //try

Busca en internet "BDE ERROR CODES", si quieres conocer los demás errores.

silviodp 12-08-2005 20:14:31

Control de error
 
Muchas gracias, lo voy a probar.
Gracias a todos.-


La franja horaria es GMT +2. Ahora son las 02:11:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi