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);
end
^
set term ; ^
y esta es la tabla que trabajo
Código SQL
[-]
set sql dialect 3;
set names none;
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)
);
alter table venta add constraint pk_venta primary key (numero);
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);
set term ^ ;
create trigger venta_clave for venta
active before insert position 0
as
begin
new.numero = gen_id(codigo_venta,1);
end
^
set term ; ^
gracias por su colaboración
Rogerio Beltrán.