Ver Mensaje Individual
  #3  
Antiguo 04-11-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola Elite237,
Déjame ver si comprendo tu problema. ¿Deseas que cada vez que alguien presente su cuestionario se actualice algún campo (de alguna tabla) para llevar el registro de los test que ha realizado?

Si es eso, lo mejor sería crear un trigger AFTER INSERT. Según recuerdo, tu haces uso de Firebird. Un trigger podría ser así:
Código SQL [-]
SET TERM ^ ;

CREATE TRIGGER ACTUALIZA_CUESTIONARIOS FROM PRESENTACIONES
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
   UPDATE HISTORICO_CUESTIONARIOS SET CANTIDAD = CANTIDAD + 1 WHERE CODIGO = NEW.CODIGO
END ^

SET TERM ; ^

La explicación es como sigue:
1. ACTUALIZA_CUESTIONARIOS es el nombre del trigger.
2. PRESENTACIONES es el nombre de la tabla en donde se procede a llevar el registro de cada presentación. De este modo cada ver que se inserte un nuevo registro en esta tabla (por ello el AFERT INSERT), se dispara el trigger ejecutando las sentencias correspondiente.
3. Supongamos que existe una tabla HISTORICO_CUETIONARIOS en donde se lleva el manejo de algunas estadísticas, Entre sus campos existe uno llamado CANTIDAD, y se lo emplea para llevar la cuenta de cuestionarios. Por ello, se lanza una instrucción UPDATE que incremente dicho valor.
4. Como nos estamos refiriendo a una persona en particular, debemos indicar que sólo aplice dicha actualización a un registro en particular. Por ello se añade la cláusula WHERE indicandole que sólo aplique los cambios a aquel registro cuyo campo CODIGO sea igual al del campo CODIGO del registro previamente insertado en la tabla PRESENTACIONES. Por ello, en el WHERE viene acompañado un NEW.CODIGO.


Si no es eso lo que buscas, por favor te pediría que explicases más profundamente el problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita