FoxPro/Visual FoxPro - Crear codigo correlativo

   
Vista:

Crear codigo correlativo

Publicado por flow (2 intervenciones) el 13/10/2009 22:23:53
Hola
Desarrollo un proyecto de estudio
Estoy realizando un formulario pero quiero agragarle el registro del codigo de una forma automatica que el programa vaya generandolo de una manera automatica el campo se llama "CODIGO" y constan de 6 caracteres el formato del codigo tiene que empezar con una letra como la "C" y de alli un numero correlatico "00001" este debe ir aumentando amedida agrege un registro
como puedo hacer porque solo me funciona cuando es un digito no para 5

No se si me entienden pero por favor ayuda!!!!

Espero sus comentarios
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear codigo correlativo

Publicado por Javier (265 intervenciones) el 14/10/2009 00:39:15
Hola, una solución sería generar un indice por el campo CODIGO, de manera que cada vez que llames al formulario, en el init del mismo escribrías algo como esto.

SELECT TUTABLA
GO BOTTOM
cUltimo = TUTABLA.CODIGO

nUltimo = Val( Substr( cUltimo, 2 ) ) && Toma desde el segundo caracter hasta el final de la cadena y lo convierte a numero.

nNuevoNumero = nUltimo + 1

cNuevoNumero = Alltrim( Str( nNuevoNumero ) )

cNuevoCodigo = "C" + PadL( cNuevoNumero , 5 , "0" )

* PADL : genera una cadena a partir de otra y le agrega n caracteres a la izquierda
* EN este caso los n son 5 y el caracter de relleno es un cero.

ThisForm.txtCodigo.Value = cNuevoNumero

Espero que te sirva.

Javier (Jujuy-Argentina).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Crear codigo correlativo

Publicado por Mauricio (1367 intervenciones) el 14/10/2009 02:20:04
Puedes probar esto y adaptarlo a tu FORM:
***********************************************
*Estructura de tabla: letra C(1), codigo C(5), nuevo C(6)
CLOSE TABLE ALL
USE tabla1 IN 0
SELE tabla1
vletra = 'B' && Capturado en FORM
vcodig = 0
SELECT MAX(VAL(tabla1.codigo)) AS maximo ;
FROM tabla1 WHERE letra = vletra INTO CURSOR temporal
IF _TALLY = 0
vcodig = 1
ELSE
vcodig = INT(maximo) + 1
ENDIF
letra = vletra &&Asignar a campo de tabla
codigo = vcodig &&Asignar a campo de tabla
* Nuevo codigo generado
nuevo = vletra + PADL( vcodig,5,"0" ) &&Asignar a campo de tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar