como generar un numero dependiendo de otros campos
hola
soy nueva utilizando el form, y necesito generar un numero en donde se componga del año del ejercicio, del mes, y de tipo, y el consecutivo
en una tabla tengo los campos de ejercicio,mes, y tipo.
ejercicio mes tipo
2004 5 E
2004 5 I
de acuerdo a esto se estara generando un numero consecutivo digamos sera
0405E001
0405E002
0405E003
0405I001
0405I002
segun lo que he leido para hacer esto tengo que hacer un trigger o me conviene hacer una funcion
please necesito ayuda
soy nueva utilizando el form, y necesito generar un numero en donde se componga del año del ejercicio, del mes, y de tipo, y el consecutivo
en una tabla tengo los campos de ejercicio,mes, y tipo.
ejercicio mes tipo
2004 5 E
2004 5 I
de acuerdo a esto se estara generando un numero consecutivo digamos sera
0405E001
0405E002
0405E003
0405I001
0405I002
segun lo que he leido para hacer esto tengo que hacer un trigger o me conviene hacer una funcion
please necesito ayuda
Me imagino q lo q necesitas es un secuencial, pues create una secuencia (tipo oracle) q obtengas en el pre-insert del bloque.
CREATE SEQUENCE misecuencia INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOMINVALUE
NOCYCLE
/
en el pre.insert
select misecuencia.nextval into :bloque.camposecuencial from dual;
espero q te sirva
NOCACHE
CREATE SEQUENCE misecuencia INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOMINVALUE
NOCYCLE
/
en el pre.insert
select misecuencia.nextval into :bloque.camposecuencial from dual;
espero q te sirva
NOCACHE
Por lo que veo quieres tener un consecutivo de 3 digitos por EJERCICIO, MES y TIPO.
Te sugiero busques el valor maximo por cada tipo, lo descompongas, le incrementes 1 y que lo concatenes con los otros campos para obtener el nuevo numero. Te dejo un ejemplo:
SELECT MAX(NUMERO) Num_Max
FROM <<TABLA>>
WHERE SUBSTR(NUMERO, 1, 2) = EJERCICIO
AND SUBSTR(NUMERO, 3, 2) = MES
AND SUBSTR(NUMERO, 5, 1) = TIPO
Num := TO_NUMBER( SUBTR( Num_Max, 6, 3) ) + 1
/*Obtienes la cadena '003', lo conviertes a numero y lo incrementas*/
New_Num := EJERCICIO|| MES||TIPO|| LPAD(Num, 3, 0);
/*Concatenas los campos y le agregas ceros a la izquierda hasta completar el numero. */
Espero que te sirva.
Saludos.
Te sugiero busques el valor maximo por cada tipo, lo descompongas, le incrementes 1 y que lo concatenes con los otros campos para obtener el nuevo numero. Te dejo un ejemplo:
SELECT MAX(NUMERO) Num_Max
FROM <<TABLA>>
WHERE SUBSTR(NUMERO, 1, 2) = EJERCICIO
AND SUBSTR(NUMERO, 3, 2) = MES
AND SUBSTR(NUMERO, 5, 1) = TIPO
Num := TO_NUMBER( SUBTR( Num_Max, 6, 3) ) + 1
/*Obtienes la cadena '003', lo conviertes a numero y lo incrementas*/
New_Num := EJERCICIO|| MES||TIPO|| LPAD(Num, 3, 0);
/*Concatenas los campos y le agregas ceros a la izquierda hasta completar el numero. */
Espero que te sirva.
Saludos.
