Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Eliminar items de una factura (https://www.clubdelphi.com/foros/showthread.php?t=86216)

nabucodonosor 01-07-2014 20:37:48

Eliminar items de una factura
 
Necesito eliminar un factura junto con los items, pero existe un problema. En ocasiones no me deja borrar ya que me envia un error. Lo que pasa es lo siguiente:

Tengo un trigger en la tabla que la he nombrado [itfact] donde guardo todos los items de la factura. En el trigger after delete de esta tabla mando llamar un procedimiento el cual tiene el objetivo de renumerar los registros (cuando solamente borro un registro), pero el detalle es cuando quiero borrar toda la factura que en ocasiones si me la borra pero no todo el tiempo. Mi pregunta es como hacerle para que cuando mande borrar toda la factura no se ejecute este procedimiento?

ecfisa 01-07-2014 20:45:28

Hola nabucodonosor.
Cita:

Empezado por nabucodonosor (Mensaje 478561)
....Mi pregunta es como hacerle para que cuando mande borrar toda la factura no se ejecute este procedimiento?


Saludos :)

Casimiro Notevi 01-07-2014 22:33:40

No hay quien lo entienda :confused:

cloayza 01-07-2014 22:47:50

Cita:

Empezado por nabucodonosor (Mensaje 478561)
mando llamar un procedimiento el cual tiene el objetivo de renumerar los registros

Talvez podrías omitir esta acción...de renumerar los items de la factura, así simplificas el problema...

Eso de andar activando y desactivando triggers nunca me ha gustado...:D

Saludos cordiales

orodriguezca 01-07-2014 23:00:31

De acuerdo con cloayza. ¿Hay alguna razón de peso para renumerar los items de la factura?. Por otro lado, ¿cual es el mensaje de error que está enviando el procedimiento almacenado?. Si puedes colocar el código sería de gran ayuda.

Neftali [Germán.Estévez] 02-07-2014 09:58:44

Se me ocurren un par de opciones, que no te deberían cambiar mucho el código actual.
Tal vez pasar el código del trigger a un procedimiento que puedas ejecutar de forma manual al borrar las líneas de factura, o como segunda opción, podrías marcar la factura (añadir un campo booleano) como para borrar (antes de hacer el borrado), de forma que si la factura tiene esa marca activada (quiere decir que se va a borrar) en ese caso el trigger de renumerado debería no hacer nada.
En este caso realizas una operación de UPDATE antes del borrado, pero a cambio evitas todas las operaciones que actualmente hace el trigger.

Al González 02-07-2014 17:26:09

Similar a lo que comenta Neftalí, te recomiendo que agregues a la tabla principal un campo SmallInt (1/0) o Boolean, pero no para pre-borrar, sino para indicar si la factura está "activa" o "cancelada".

Es preferible desactivar un documento de compra-venta que eliminarlo, ya que de la primera forma se conserva el registro de lo que sucedió y cuándo sucedió, aunque la información ahí contenida ya no sea vigente. Así no tendrás problemas de huecos en la numeración consecutiva.

En pocas palabras, en una base de datos suele haber contenidos que dejan de tener impacto contable o financiero, pero no por ello dejan de tener importancia informativa.

Saludos. :)


La franja horaria es GMT +2. Ahora son las 19:40:44.

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