Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Consejo para principiante sobre Disparador y Procedimiento almacenado

Hola a todos.

Mi consulta es de diseño.

Tengo dos tablas Facturas y Conceptos.

Lo que quiero es que cada vez que tenga un insert, update o delete en conceptos me recalcule el total de la factura. Escojo After en vez de Before

1-Crear un trigger para los tres supuestos ¿Como llamo al procedimiento almacenado? ¿execute procedure mirartotal?
2-Crear el prodecimiento almacenado mirartotal

UPDATE Facturas SET TOTAL=(Select sum(total) from Conceptos where Facturas.factura=Conceptos.factura)


LQue me aconsejais?
Responder Con Cita
  #2  
Antiguo 13-06-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En principio, puedes ahorrarte el SP ¿no?. colocas directamente en el disparador la instrucción SQL.

Si te decides por tener un SP, pues elije el nombre más descriptivo posible: "ActualizaTotalFactua"

Es muy fácil complicar las cosas, intenta seguir el método KISS (Keep It Simple Stupid ).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 16-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Problema en el disparador.

Bueno, lo primero gracias por contestar y darme ese consejo. Ya os he comentado que soy muy novato.

Tengo funcionando el disparador con el siguiente código:
Código:
UPDATE FACTURAS SET TOTAL=(Select SUM(Total) from conceptos where conceptos.FACTURA=new.Factura) where factura=new.Factura;
Con el IBExpert meto un concepto nuevo y validando la transacción en Conceptos y Facturas me guarda los cambios, pero desde Delphi no me lo hace.

Trabajo con los IBX, las IBTransaction están en Read commited y despues de un post en el evento afterpost le hago el Commit y abro el IBDataset.

¿Algo hago mal?
Responder Con Cita
  #4  
Antiguo 16-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Pues debe ser que no devuelve nada la instrucción Select(SUM

Bueno pues sigo intentando hacer funcionar esto.

Le he colocado detras del UPDATE otro, simplemente para ver si cambia y efectivamente si lo hace
Código:
UPDATE FACTURAS SET PAGADA=5 where Factura=new.Factura;
El fallo debe estar:

Código:
UPDATE FACTURAS SET TOTAL=(Select SUM(Total) from conceptos where conceptos.FACTURA=new.Factura) where factura=new.Factura;
Pero lo extraño es que con el IBExpert si que me funciona.

Última edición por NPIdea fecha: 16-06-2008 a las 13:58:39.
Responder Con Cita
  #5  
Antiguo 17-06-2008
Avatar de boreg
boreg boreg is offline
Miembro
 
Registrado: oct 2007
Ubicación: México, México
Posts: 76
Poder: 17
boreg Va por buen camino
Commit Transaction

Saludos NPIdea, ¿estas haciendo commit despues de hacer los cambios?, creo que por ahi debe de estar el problema.
Responder Con Cita
  #6  
Antiguo 18-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 20
NPIdea Va por buen camino
Gracias por vuestro interés

Bueno, pues ayer lo solucioné y lno pudé acceder al foro por la mañana.

Pues sí, era problema de los commit. Hacía commit de una tabla y abría la tabla y luego hacía el commit de la otra y no me guardaba los cambios.

Ahora hago commit en el mismo evento y los actualiza perfectamente.

Repito, muchas gracias.
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
Duda sobre procedimiento almacenado Nuria Firebird e Interbase 33 01-10-2004 21:09:11
Procedimiento almacenado para obtener Rubros y subrubros oliverinf Firebird e Interbase 7 27-08-2004 01:25:42
Consejo sobre componente para backup apicito Varios 0 10-05-2004 20:10:59
Procedimiento Almacenado Ulises Providers 3 30-01-2004 18:14:58
Ayuda sobre un Procedimiento Almacenado Nuria Firebird e Interbase 6 21-01-2004 13:18:15


La franja horaria es GMT +2. Ahora son las 05:00:55.


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