Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 30-05-2005
inferno inferno is offline
Miembro
 
Registrado: may 2005
Posts: 10
Poder: 0
inferno Va por buen camino
hola Hector ,es Julio ramos mi problema es el siguiente muy paresido al de JoanKa:Tengo las siguiente tablas:
CREATE TABLE tblfacturas (
COD_factura long NOT NULL,
NOMB_CLI VARCHAR(30),
);
CREATE TABLE tbltiene
(
COD_factura long NOT NULL, /* este campo esta referenciado al campo clave de tblfacturas*/

cod_articulo VARCHAR(10) NOT NULL/* este campo esta referenciado al campo clave de tblarticulo*/
);


CREATE TABLE tblarticulo
(

cod_articulo VARCHAR(10) NOT NULL,
nomb_articulo VARCHAR(50) NOT NULL
);


asi como este Procedimiento almacenado

CREATE PROCEDURE INSERTAR_factura (
COD_factura VARCHAR(10),
NOM_cli VARCHAR(30),
AS
begin
INSERT INTO tblfacturas (CODI_factura, NOMB_CLI, )
values (:COD_factura, :NOM_cli);
end


tengo este trigger
CREATE GENERATOR CODI_GENER;
SET GENERATOR CODI_GENER TO 0;


CREATE TRIGGER INSERTAR_CODI FOR CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.cod_factura is null) then
new.cod_factura=gen_id(codi_gener,1);/*este numero hay manera de sacarlo al momento de ser generado por alguna consulta,porcedimeinto desde delphi,el manejador*/
end
como puedes ver necesito el numero que genera el trigger al momento de insertar el tabla factura para colocarlo en tabla tbltiene en el campo cod_factura
este procedure lo puede hacer la cosa es que si el sistema esta en red me entiendes varias aplicaciones conectadas a la misma base de datos (cliente servidor).Porque un cliente "a" ejecuta el procedimiento insertar_factura y otro cliente "b" tambien ejecuta el procedimiento insertar_factura entoces caimos en esto que el cliente "b" ejecuta primero el procedimiento que retorna el numero generado por ejemplo el procedimeinto tu yo (CREATE PROCEDURE GET_NEXT_CODI_CLIE), al momento de seleccionar el valor selecciona la correcta o selecciona el ultimo numero generado y no es la correcta por primero el cliente "a" solicito el procedimiento insertar_factura.
CREATE PROCEDURE GET_NEXT_CODI_CLIE
RETURNS (NUEVO_CODI_CLIE long)
AS
BEGIN
/*Obtienes el valor actual del generador sin incrementarlo*/
/*Observa el incremento en cero en la función gen_id*/
NUEVO_CODI_CLIE=CAST(gen_id(codi_gener,0)+1 AS VARCHAR(7));
SUSPEND;
END

espero que me puedas ayudar....
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 02:16:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi