Ver Mensaje Individual
  #1  
Antiguo 02-10-2007
rogeriobeltran rogeriobeltran is offline
Miembro
 
Registrado: dic 2003
Ubicación: Bucaramanga-Santander-Colombia
Posts: 49
Reputación: 0
rogeriobeltran Va por buen camino
Question Registro desaparecen en Firebird con Trigers

Buenas:

Ante todo gracias por la colaboración, desde hace un año diseñe un programa para la venta, tenia una tabla en donde guardo la ultima factura por caja y la iba actualizando por caja cada vez que realizaba una factura. Desde hace unos dos meses el cliente me solicito que necesitaba trabajar dos equipos con la facturación de una caja, para ello cree un valor consecutivo utilizando un generador y un triger cada vez que inserta un archivo. Pero desde hace unos dias me crean el registro imprimen la factura y en ese instante en el otro equipo estan creando otra factura y alguna de ellas no me la guarde y realmente no se que cambios realizar o que estoy realizando mal. Elimine las transacciones pensando que fueran ella y tampoco. Un equipo tiene la base y el otro se conecta a ella por red local. Lenguaje de programación Delphi 5, firebird 2.0 y componentes dataaccess. La estructura de datos es la siguiente:

crea el generador:
Código SQL [-]
 CREATE GENERATOR CODIGO_VENTA;

este es el triger

Código SQL [-]
 set sql dialect 3;

set names none;

create generator codigo_venta;

set term ^ ;


create or alter trigger venta_clave for venta
active before insert position 0
as
begin
new.numero = gen_id(codigo_venta,1);
  /* Trigger text */
end
^


set term ; ^

y esta es la tabla que trabajo

Código SQL [-]
 
set sql dialect 3;

set names none;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


create generator codigo_venta;

create table venta (
    numero                     integer not null,
    fecha                      timestamp not null,
    cliente                    varchar(15) not null,
    vendedor                   varchar(15) not null,
    factura                    float,
    total                      double precision,
    descuento                  double precision,
    iva                        double precision,
    concepto                   integer,
    observacion                varchar(200),
    estado                     char(1),
    codigousuariocreacion      integer,
    fechacreacion              timestamp,
    codigousuariomodificacion  integer,
    fechamodificacion          timestamp,
    prefijo                    varchar(10)
);




/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

alter table venta add constraint pk_venta primary key (numero);


/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

alter table venta add constraint fk_venta_cliente foreign key (cliente) references cliente (identificacion);
alter table venta add constraint fk_venta_concepto foreign key (concepto) references concepto_venta (codigo);
alter table venta add constraint fk_venta_vendedor foreign key (vendedor) references vendedor (identificacion);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


set term ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: VENTA_CLAVE */
create trigger venta_clave for venta
active before insert position 0
as
begin
new.numero = gen_id(codigo_venta,1);
  /* Trigger text */
end
^


set term ; ^


gracias por su colaboración

Rogerio Beltrán.
Responder Con Cita