Separador de miles, comas en un label...

Hace unos días te hice una consulta, luego de mucho investigar y batallar, llegué a esto:

Creé una prg de procedure, que llamé comas. Desde un form lo llamo así:

thisf form.label21.caption= comas(valor)

Este es el código:

PROCEDURE comas
PARAMETERS valor
num=INT(valor)
cuantos=LEN(ALLTRIM(str(num,18,0)))
grupos=int(cuantos/3)
sobran=MOD(cuantos,3)
tex=ALLTRIM(STR(num,18,0))
ss=""
IF cuantos <= 3
RETURN tex
ELSE
IF sobran > 0
cero=SUBSTR(tex,1,sobran)
tex=SUBSTR(tex,(sobran+1))
ENDIF
DIMENSION mat(grupos)
FOR i = 1 TO grupos
STORE SUBSTR(tex,1,3) TO mat(i)
STORE SUBSTR(tex,4) TO tex
ss=ss+mat(i)+","
ENDFOR
DO case
CASE cuantos=6
cuantos1=(LEN(ALLTRIM(ss)))
ss1=SUBSTR(ss,1,(cuantos1-1))
RETURN ss1
CASE cuantos=9
cuantos1=(LEN(ALLTRIM(ss)))
ss1=cero+","+SUBSTR(ss,1,(cuantos1-1))
RETURN ss1
CASE cuantos=12
cuantos1=(LEN(ALLTRIM(ss)))
ss1=cero+","+SUBSTR(ss,1,(cuantos1-1))
RETURN ss1
OTHERWISE
cuantos1=(LEN(ALLTRIM(ss)))
ss1=cero+","+SUBSTR(ss,1,(cuantos1-1))
RETURN ss1
ENDCASE
ENDIF
RETURN ss1
ENDPROC


Espero te guste y si crees que se puede mejorar, pues adelante, estoy abierto a cualquier posibilidad.
Una vez más Gracias y Saludos

1 respuesta

Respuesta
1

¿Excelente elías siempre aprendiendo un poco cada día no funciono el format o input mask? Del objeto

Fijate que que el input mask no trabajaba correctamente, a veces separaba bien y otras no, en ocasiones separa de grupos de dos dígitos, por eso decidí hacer esta rutina. Se que se puede optimizar mucho, si tienes intención, adelante. Por ahora me sirve y si mas adelante tengo tiempo de retocarla lo haré.

Saludos

Ok muy buena idea Finaliza tu pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas