Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-07-2011
marcy marcy is offline
Registrado
 
Registrado: dic 2009
Posts: 1
Poder: 0
marcy Va por buen camino
Cómo controlar errores de llaves foráneas

Hola, eestoy trabajando mysql y delphi 7 utilizo componentes ADO, pero quisiera que me apoyaran en cómo puedo controlar errores en delphi, para que en lugar de que me saque de la aplicacion pueda mandar un mensaje de error, por ejemplo, si tengo un registro que hace referencia a otra tabla, si quiero eliminar el registro y alguna tabla le hace referencia no me saque de la aplicacion.

unos amigos me dieron un codigo pero en visual:

On Error GoTo errores
//codigo que debe ejecutar
Exit Sub
errores:
If Err.Number = -2147217900 Then
MsgBox "Llave duplicada"
End If


¿cómo sería algo parecido en delphi?

intenté con este código:

try
alumnos.Delete;
finally
begin
Showmessage('No se puede eliminar el registro');
end;
end;

Responder Con Cita
  #2  
Antiguo 26-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola marcy y bienvenido a los foros de Club Delphi.

Cita:
intenté con este código:
try
alumnos.Delete;
finally
begin
Showmessage('No se puede eliminar el registro');
end;
end;
Te pongo un equivalente:
Código Delphi [-]
 try
   Alumnos.Delete;
  except
    on E:Exception do
      if E is EDBEngineError then  // detectado por la BDE
        MessageDlg(Format('%s %d',[EDBEngineError(E).Message,
                   EDBEngineError(E).Errors[0].ErrorCode]),mtError,[mbOk],0)
      else if E is EDatabaseError then  // detectado por la VCL
        MessageDlg(E.Message,mtError,[mbOK],0);
  end;
Si también intentaramos obtener el código de error de un servidor SQL por ejemplo Interbase, sería:
Código Delphi [-]
  try
   Alumnos.Delete;
  except
    on E:Exception do
      if E is EIBInterbaseError then    // error Interbase
        MessageDlg(Format('%s %d',[EIBInterbaseError(E).Message,
            EIBInterbaseError(E).IBErrorCode]),mtError,[mbOk],0)
      else if E is EDBEngineError then  // detectado por la BDE
        MessageDlg(Format('%s %d',[EDBEngineError(E).Message,
                   EDBEngineError(E).Errors[0].ErrorCode]),mtError,[mbOk],0)
      else if E is EDatabaseError then  // detectado por la VCL
        MessageDlg(E.Message,mtError,[mbOK],0);
  end;
Lamentablemente no trabajo con MySQL, por lo que no sé de que manera obtener el código del mismo. Pero de todas formas el error será captado por EDatabaseError.

La Cara Oculta de Delphi 4 dedica un capítulo al tratamiento de las excepciones. Lo podes descargar del FTP de Club Delphi.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con llaves foraneas jcrg666 MySQL 1 01-04-2010 00:41:36
Relación de tablas con llaves foráneas egostar Firebird e Interbase 8 05-07-2007 20:08:57
LLaves foraneas... Luis Castillo SQL 2 13-11-2005 18:45:34
Llaves Foraneas RainFall MySQL 1 26-07-2004 04:19:28
Llaves foraneas en BDD distintas StartKill Firebird e Interbase 7 31-01-2004 01:14:01


La franja horaria es GMT +2. Ahora son las 01:50:29.


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
Copyright 1996-2007 Club Delphi