Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Problema manejando excepciones

Tengo una instrucción para copiar datos de una tabla a otra , lo que pasa es que la tabla 1 , admite artículos repetidos , la tabla 2 (que se copia de la tabla 1 , no admite artículos repetidos , da key violetion , cuando repite uno).

bien , tengo una instrucción

Código Delphi [-]

Try

with tabla2 do
begin

    First;
     while not eof do
       begin
         insertaarticulo('tabla1') // procedimiento donde va a por los articulos de la tabla1.
         Next;
       end;

end;

except;
end; // end del except , por si se encuentra una excepción , no haga nada.

El caso es que si en la tabla1 , tengo esta lista .

Articulo1
Articulo2
Articulo1
Articulo3

pues copia el articulo1 , el articulo2 y luego al encontrar el articulo1 otra vez , pues key violation , y se para , yo quiero que si encuentra el articulo1 , y esta repetido y es una key violation , se lo salte , pero luego si me añada el articulo 3 .

Por que tal y como tengo el código , me sale esto en la tabla2 :

Articulo1
Articulo2

y ya esta ....
Responder Con Cita
  #2  
Antiguo 28-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
El problema es debido a que el try except no esta en el lugar adecuado, tal como esta puesto, la excepcion salta al except saliendo del bucle, no te aparecera ningun mensaje en la pantalla pero acabara la funcion en este punto. El Except es como un goto, desde la linea que de error se salta al except y se continua por ahi, saliendose del bucle:

Tendras que hacer algo parecido a:
Código:
 
with tabla2 do begin 
   First; 
   while not eof do begin 
      try insertaarticulo('tabla1') 
      except end; 
      Next; 
   end; 
end;
Añado que no se aconseja nunca poner un except vacio que ignore completamente todas las excepciones, aunque esto ira bien para que funcione
el codigo como quieres, si se produjesen otros errores por otras causas (por ejemplo que la base de datos este corrompida o cualquier otra cosa),
no te enterarias y tampoco tendrias ningun pista para saber porque no funciona el codigo.
Asi que es preferible en el except asegurarse de que la excepcion que esta dando es la de key violation para continuar , y si es otro tipo de error,
apuntarlo en algun sitio, o mostrar un mensaje de error al usuario o lo que sea para saber que esta pasando algo extraño.

Saludos

Saludos

Última edición por Mick fecha: 28-07-2006 a las 19:22:12.
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
Problema con excepciones soto Varios 5 15-12-2005 18:26:40
Excepciones Acker Tablas planas 6 06-08-2005 15:22:18
Problema con las Excepciones y OO kueik Varios 4 18-06-2004 14:05:34
problema manejando datos =( CI>140 Conexión con bases de datos 4 22-09-2003 09:56:16
problemas manejando campos CI>140 Conexión con bases de datos 1 20-09-2003 15:59:40


La franja horaria es GMT +2. Ahora son las 01:06:23.


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