Hola. Notas.
1. El porque usar character?? ...se pueden usar mejor 2 campos numericos no?
2. Depende de lo que se desee implementar, considero que no se debe REENUMERAR cuando se borre un reg.relativamente "viejo" YA QUE ESE CAMPO PODRIA ESTAR RELACIONADO CON OTRAS TABLAS. Te podria traer problemas el REENUMERAR. YO PREFIERO QUE QUEDEN HUECOS EN LOS CORRELATIVOS DE LAS TABLAS.
3. En todo caso se tiene que tomar el MAXIMO numero (funcion MAX() del SQL ) ya que como te decia un "documento" con 2013-000025 , podria resultar despues con 2013-000010 si es que reenumerarias.
4. En resumen
- usa 2 campos numericos
- Si no puedes cambiar el campo, entonces controlalo bien. Te recomendaria que establezcas QUIEN O QUÉ decide si se cambia de año, puedes usar la fecha del servidor como el que decida.
- Algoritmo:
-- inicio Algoritmo --
Select max(campoDelCorrelativo) into :maximo from tablaenLaQueEstoyEnumerando (**1)
anoTabla = left(maximo, ...)
anoHoy = year( sysdate )
if anoFecha > anoTabla
anito = anoHoy
correlativo = 1 o 000001 como quieras
else
anito = anoTabla ;
correlativo = right( maximo) + 1
end if
nuevoNumero = anito + correlativo
-- fin Algoritmo --
(**1): UNA MEJOR SOLUCION ES CONSULTAR UNA TABLITA (por ejemplo TB_CORR)QUE TENGA SOLO EL REGISTRO QUE CONTROLE : TOMO EL ULTIMO DE AHI, Lo INCREMENTO Y ES EL MIO!, ESE "MIO" LO GRABO EN LA TABLA DE "MOVIMIENTOS" (ó tablaenLaQueEstoyEnumerando) y actualizo mi tabla que controla el correlativo TB_CORR.
Suerte,
Date: Tue, 5 Nov 2013 04:45:19 -0800
From: juanfranciscovelasquezmorales@gmail.com
To: techeraz9@googlegroups.com
Subject: Codigo de acuerdo al Año actual
Durante el año 2013, he registrado un promedio de 5,040 registros aproximadamente, luego estoy pensando que para el otro año estos registros se tienen que volver a guardar desde 000 nuevamente, entonces deseo que mediante un código al detectar el año actual, si ya paso del año 2013, automáticamente reinicie de 2014 - 00001, 2014 - 00002, 2014 - 00003, 2014 - 00004, 2014 - 00005 .... etc y se asigne a este campo.
Claro siempre teniendo en cuenta la incrementación a partir del último numero, que se encuentra guardado, ya que si eliminé como por decir el registro Nro. 009 y en el campo queda como último registro el 008 , entonces incremente el nuevo como 009...
este código me permite asignar solo 00001.... en forma consecutiva pero cuando le cambio la fecha sigue incrementando y no reinicia el numerador en 2014 -00001.
string ls_cod
Select Count(numeracion)
into :Filas
From comision;
ls_cod=string(Filas+1,"00000")
if dw_1.Rowcount()=1 then
else
dw_1.InsertRow(1)
dw_1.ScrollToRow(1)
end if
dw_1.Setitem(dw_1.GetRow(),"numeracion",ls_cod)
ayuda con esto por favor
--
---
Has recibido este mensaje porque estás suscrito al grupo "TechEra" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a techeraz9+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
0 comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.