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 05-12-2007
analia1979 analia1979 is offline
Miembro
 
Registrado: sep 2006
Posts: 22
Poder: 0
analia1979 Va por buen camino
No atrapa la excepcion

hola a todos...

Tengo un codigo con try except que no esta tomando la excepcion y la maneja el handler interno cuando lo ejecuto desde el IDE de delphi.

Si lo ejecuto fuera del ide no hace nada.

El codigo es el siguiente:

Código Delphi [-]
if MessageBox(Handle, PChar('Desea Eliminar'), PChar('Confirmacion'), $00000024) = IDYES then
  begin
    try
      TClientDataSet(dsBase.DataSet).Delete;
      TClientDataSet(dsBase.DataSet).ApplyUpdates(0);
    except
      raise Exception.Create('Ese registro está relacionado con otras tablas')
    end;
  end;
end;

Si alguien me puede ayudar.. en que estoy fallando, mil gracias..

Última edición por dec fecha: 05-12-2007 a las 00:18:12.
Responder Con Cita
  #2  
Antiguo 05-12-2007
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Funcionamiento normal del TRY en IDE

El que el TRY no te esté tomando el error para ser manejado por tu rutina en except es normal cuando estas haciendo las pruebas y ejecutando tus formas con F9. Pero si eso mismo lo ejecutas utilizando el .exe creado si te debe de funcionar.
Yo hice una pregunta similar hace como 6 meses y esto mismo fue lo que me respindieron.
Ahora, el que no te funcione al ejecutarlo desde el .exe si que es extraño. Me vas a disculpar pero ahi si me declaro incompetente.
Saludos.
Responder Con Cita
  #3  
Antiguo 05-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por analia1979 Ver Mensaje
hola a todos...

Tengo un codigo con try except que no esta tomando la excepcion y la maneja el handler interno cuando lo ejecuto desde el IDE de delphi.

Si lo ejecuto fuera del ide no hace nada.

Si alguien me puede ayudar.. en que estoy fallando, mil gracias..
Hola, trata con esto

Código Delphi [-]
if MessageBox(Handle, PChar('Desea Eliminar'), PChar('Confirmacion'), $00000024) = IDYES then
  begin
    try
      TClientDataSet(dsBase.DataSet).Delete;
      TClientDataSet(dsBase.DataSet).ApplyUpdates(0);
    except
      ShowMessage('Ese registro está relacionado con otras tablas');
    end;
  end;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 05-12-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Usar OnReconcileError

¡Hola a todos!

Analia1979:

Estás creando y elevando una excepción en la sección Except de un bloque Try, lo cual es particularmente raro. El acercamiento que propone Egostar es más acertado, genéricamente hablando.

Pero tratándose del método TClientDataSet.ApplyUpdates, no esperes que las excepciones por errores en el servidor lleguen a ese punto del código. El método ApplyUpdates las atrapa y las canaliza al evento OnReconcileError. Es en él donde puedes mostrar el mensaje al usuario.

Por otro lado, no es del todo confiable asumir que cualquier error después de intentar eliminar un registro, se deba a que éste se encuentre relacionado con otra tabla. Puede haber más causas. Aunque, si no quieres complicarte, simplemente podrías cambiar el mensaje por "No pudo eliminarse el registro. Probablemente hay otros registros de la base de datos que están relacionados con él".

Por favor, no dejes de retroalimentar este hilo con tus avances o en caso de tener más dudas.

Un abrazo atrapado.

Al González.
Responder Con Cita
  #5  
Antiguo 05-12-2007
analia1979 analia1979 is offline
Miembro
 
Registrado: sep 2006
Posts: 22
Poder: 0
analia1979 Va por buen camino
Usar OnReconcileError

Hola a todos!!..

Muchas gracias a todos los que acudieron a mi problema.
Al Gonzales use tu solucion y es verdad lo que dices, use el evento onReconcileError para mostrar el mensaje al usuario.
Es verdad tb que no todo errror al eliminar se deba a que esta relacionada con otra tabla, voy a intentar ver como puedo hacer para asegurarme que ese sea el error.., cualquier duda recurro a ustedes.
Muchas gracias...
Saludos..
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
Excepcion con ADO SidedTermita Conexión con bases de datos 11 12-12-2007 02:21:04
Excepción en JSP david.rguez JAVA 1 14-02-2007 22:21:02
excepcion nenufer Conexión con bases de datos 6 16-05-2006 22:01:38
excepción autoincrement jonmendi Conexión con bases de datos 0 25-04-2006 17:33:55
Excepción, repentina. Chocoslovaco Tablas planas 1 28-11-2005 21:15:09


La franja horaria es GMT +2. Ahora son las 04:51:33.


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