Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Unhappy Incrementar campo según el valor de otro

Buenas....

La razon de este tema es si alguien lo ha hecho?, es de que manera se puede incrementar un campo según el valor de otro dentro de una misma tabla (firebird 2.0), es decir si tengo un un tipo de documento A,B,C que serán guardados constantemente en mi tabla la idea es que al momento de hacer la inserción del registro un trigger pueda determinar cual es el tipo de documento y según este realizar un incremento en la columna donde se almacenan los valores, tomando como referencia el número máximo guardado segun el tipo, un ejemplo

A - 1
B - 1
C - 1
........
C - 1
A - 1
A - 2
C - 2
B - 1
C - 3

Explicación: todos arrancan en "1", pero luego según la inserción de registros el campo que lleva los números aumenta, como nos podemos dar cuenta los tipos de documentos A y C crecio su campo asociado
Responder Con Cita
  #2  
Antiguo 06-08-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 18
Kipow Va por buen camino
Algo asi

Código Delphi [-]
create trigger MITABLA_AI for MITABLA 
active AFTER INSERT position 0 as 
begin    
     UPDATE MITABLA SET Columna_Valor = SELECT MAX(Columna_Valor) + 1                                       
                                                          FROM MITABLA                                        
                                                          WHERE Tipo = NEW.Tipo
     WHERE Tipo = NEW.Tipo    
end

Última edición por Kipow fecha: 08-08-2008 a las 05:16:31.
Responder Con Cita
  #3  
Antiguo 06-08-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
hola

yo utilizo el trigger BI y asi evito un innecesario udate



Código SQL [-]
if  (new.documento='A') then
select max(campo_a)+1 from tabla into new.campo_a;
else if  (new.documento='B') then
select max(campo_b)+1 from tabla into new.campo_b;
else if  (new.documento='C') then
select max(campo_c)+1 from tabla into new.campo_c;

No se si eso es lo que quieres, pero la idea e modificar el valor antes de la insercion, ya que si haces update del AI, luego debes controlar los eventos BU i AU


Saludos
Responder Con Cita
  #4  
Antiguo 06-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gracias, por tan eficases respuestas, voy a probarlo, sin embargo cabe anotar que los documentos como A,B,C... serán creados por el usuario por lo tanto debe hacerse de forma dinámica.
Responder Con Cita
Respuesta


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Incrementar en 1 un campo númerico efelix Conexión con bases de datos 5 03-12-2007 20:36:54
Incrementar numeros en un campo desde delphi dariana20 SQL 6 25-05-2006 23:40:46
Repetir registro segun valor de un campo yusnerqui SQL 2 13-03-2005 03:14:40
Suma/resta de un campo dependiendo del valor de otro huanque SQL 2 11-09-2004 21:23:47
Incrementar un campo numerio edwin1 OOP 1 11-08-2003 22:32:01


La franja horaria es GMT +2. Ahora son las 11:56:46.


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