Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2006
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
try

Lo que quiero hacer es muy sencillo y no entiendo que hago mal.
Quiero poder borrar una entrada a una tabla, pero tengo otra tabla que la usa como clave foranea y evidentemente salta una excepcion.
Quiero capturar esa excepcion y lanzar un mensaje que diga que esa entrada no se puede borrar.
Pongo el try al principio del codigo que quiero controlar y despues pongo un:

try
{codigo a controlar}
except
on EMySqlException do showmessage('mi mensaje personalizado');
end;

y sigue no funciona, salta el mensaje de excepcion del mysql y casca la aplicacion, ¿que hago mal?.
Responder Con Cita
  #2  
Antiguo 18-10-2006
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por chipsoni

try
{codigo a controlar}
except
on EMySqlException do showmessage('mi mensaje personalizado');
end;
Posibilidad 1:
El código no lanza excepciones. Si ocurre esto, entonces debes revisar los eventos de error de la tabla/query/dataset/...

Posibilidad 2:
La excepción generada no es la que intentas capturar. Para comprobarlo, puedes capturar todas las excepciones (usando la clase "Exception") y comprobar el valor de E.ClassName.
Responder Con Cita
  #3  
Antiguo 18-10-2006
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
Pues si que lanza una excepcion, porque peta la aplicacion y sale una ventana diciendo exactamente que no puedo borrar una linea padre, porque hay otra tabla que la usa y me da el nombre de excepcion EMySqlException y hasta el numero de exception, justo cuando peta, pero claro, el mensaje es muy tecnico para lanzarselo al cliente final y ademas es que me peta la aplicacion y esa no es la idea.

Quiero capturarlo, lanzarle un mensaje mas amigable y no borrar la entrada.

¿Alguna otra idea?, me he leido toda la ayuda del delphi y sigo sin encontrar el fallo.

Muchas gracias.
Responder Con Cita
  #4  
Antiguo 18-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Será mejor que pegues el código exacto. Lo que ocurre es la posiblidad 1 pero con una variante, las instrucciones en {codigo a controlar} realmente no lanzan la excepción, sino que dicha excepción se produce como fallo colateral de ese código a controlar

Sería muy conveniente decir qué base de datos usas, qué componentes usas para acceder a esas tablas (BDE, ADO, IBX, etc) y el código exacto que estas usando; ya que la filosofía que usas es la correcta, pero puede haber detalles que se escapen.

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: 18-10-2006 a las 14:33:23.
Responder Con Cita
  #5  
Antiguo 18-10-2006
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 22
kalimero Va por buen camino
Hola.
Código Delphi [-]
try
  //codigo a controlar
except
  on E:Exception do
  begin
   Dataset.cancel;
   Showmessage('Mensaje personalizado');
  end;
end;
De todas forma,tal y como dice Lepe, serai conveniente que dieras mas informacion: Sistema deBD,componentes,etc,etc

Saludos
Responder Con Cita
  #6  
Antiguo 18-10-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!

A parte de lo que te han comentado, ten en cuenta que si ejecutas el programa desde el IDE de Delphi te va a saltar el mensaje "feo" de todas formas. Prueba de ejecutar la aplicación desde fuera del IDE y a lo mejor ves que no es tal error. El lanzamiento de las excepciones dentro del IDE se pueden deshabilitar, pero no recuerdo cómo.

Un saludo

Edu
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


La franja horaria es GMT +2. Ahora son las 14:43:51.


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