PDA

Ver la Versión Completa : Controlar un Disparador al momento de cancelar o eliminar


JoanKa
30-06-2006, 17:03:48
Muy buenas a todos quisiera hacer una consulta:

Estoy realizando un mantenimiento de de la forma maestro detalle (facturas, lineas_facturas),

CREATE TABLE FACTURAS (
FACT_CODIGO PK (Clave Primaria)
CLI_CODIGO
FACT_FECHA_ALTA
.....
);

CREATE TABLE LINEAS_FACTURAS (
FACT_CODIGO PK(Clave Primaria)
LIN_NUMERO PK(Clave Primaria)
ARTI_CODIGO
LIN_CANTIDAD
.......
);

Para cada tabla tengo un generador, es decir:

Generador para la Factura
CREATE GENERATOR GEN_FACT_CODIGO;

Generador para la linea de la Factura
CREATE GENERATOR GEN_LIN_FACTURA;

Bueno les cuento lo que me esta pasando: En un mantenimiento doy de alta una factura, como tambien lo puedo modificar, hasta aca me va muy bien me registra todo ok, todo en sus respectivas tablas.

Ahora viene el problema::confused:

Supongamos que la ultima factura ingresadas es 850 y la ultima linea de factura es 13520 y presiono sobre un boton de ingresar nueva factura entonces se activa la factura 851 e ingreso 5 articulos a la factura, es decir las lineas de la factura es de la 13521, 13522, 13523, 13524 y 13525 pero por X motivos CANCELO LA FACTURA Y SALGO DEL MANTENIMIENTO DE FACTURACION Y CUANDO INGRESO NUEVAMENTE ME DOY CUENTA QUE LA FACTURA ES AHORA EL NUMERO 852 Y LAS LINEAS ES AHORA 13526, es decir se han incrementado.

Lo que yo deseo es que al momento de cancelar se quede en ultimo registro tanto en FACTURAS con en LINEAS FACTURAS, es decir 851 y 13521, yo sé que es por el disparador de cada tabla.

La pregunta es la siguiente: como puedo contralar a los disparadores, de tal manera que tenga una correlacion en las Facturas y en la Lineas de las Facturas.

Gracias y saludos

maeyanes
30-06-2006, 18:00:36
Los generadores de Interbase/FireBird, y en general todos los campos autoincrementales, no son muy buenos para hacer este tipo de contadores, donde necesitas tener siempre una numeración sin huecos o saltos.

Para esto es mejor que te crees una tabla con los contadores que necesites y los incrementes solo al momento de grabar los datos.



Saludos...