quiero la conversion de un numeros a cadena de caracteres

lety
02 de Mayo del 2004
quiero la conversion de un numeros a cadena de caracteres

JONATHAN_JJCG
02 de Mayo del 2004
PARA CONVERTIR UN NUMERO A CADENA DE CARACTERES DEBES UTILIZAR LA FUNCION "STR" DE LA SIGUIENTE FORMA STR(NUMERO) Y DE ESA FORMA PODRAS MANIPULAR EL NUMERO COMO SI FUERA UN CARACTER

Conexion
02 de Mayo del 2004
ok

SAM
02 de Mayo del 2004
busca en www.lawebdelprogramador/fuentes

Roberto Rangel
02 de Mayo del 2004
Hola, esta es una funcion que escribi para efectuar lo que pides, esta publicada en www.lawebdelprogramador.com y de cualquier forma te la copio aqui mismo, espero y te sea de utilidad.

Saludos

FUNCTION Monto2Letra
LPARAMETERS tyMonto, tlDolares
LOCAL lyEntero, lyCentavos, liNumeroBloques, liPrimerDigito, liSegundoDigito, liTercerDigito, lcBloque, liBloqueCero, ;
lcLetra
DIMENSION laUnidades(29), laDecenas(9), laCentenas(9)

tyMonto = MTON(ROUND(tyMonto, 2))
lyEntero = INT(tyMonto)
lcLetra = IIF(lyEntero = 0, "CERO", "")
lyCentavos = (tyMonto - lyEntero) * 100

laUnidades(1) = "UN"
laUnidades(2) = "DOS"
laUnidades(3) = "TRES"
laUnidades(4) = "CUATRO"
laUnidades(5) = "CINCO"
laUnidades(6) = "SEIS"
laUnidades(7) = "SIETE"
laUnidades(8) = "OCHO"
laUnidades(9) = "NUEVE"
laUnidades(10) = "DIEZ"
laUnidades(11) = "ONCE"
laUnidades(12) = "DOCE"
laUnidades(13) = "TRECE"
laUnidades(14) = "CATORCE"
laUnidades(15) = "QUINCE"
laUnidades(16) = "DIECISEIS"
laUnidades(17) = "DIECISIETE"
laUnidades(18) = "DIECIOCHO"
laUnidades(19) = "DIECINUEVE"
laUnidades(20) = "VEINTE"
laUnidades(21) = "VENTIUN"
laUnidades(22) = "VEINTIDOS"
laUnidades(23) = "VEINTITRES"
laUnidades(24) = "VEINTICUATRO"
laUnidades(25) = "VEINTICINCO"
laUnidades(26) = "VEINTISEIS"
laUnidades(27) = "VEINTISIETE"
laUnidades(28) = "VEINTIOCHO"
laUnidades(29) = "VEINTINUEVE"

laDecenas(1) = "DIEZ"
laDecenas(2) = "VEINTE"
laDecenas(3) = "TREINTA"
laDecenas(4) = "CUARENTA"
laDecenas(5) = "CINCUENTA"
laDecenas(6) = "SESENTA"
laDecenas(7) = "SETENTA"
laDecenas(8) = "OCHENTA"
laDecenas(9) = "NOVENTA"

laCentenas(1) = "CIENTO"
laCentenas(2) = "DOSCIENTOS"
laCentenas(3) = "TRESCIENTOS"
laCentenas(4) = "CUATROCIENTOS"
laCentenas(5) = "QUINIENTOS"
laCentenas(6) = "SEISCIENTOS"
laCentenas(7) = "SETECIENTOS"
laCentenas(8) = "OCHOCIENTOS"
laCentenas(9) = "NOVECIENTOS"

liNumeroBloques = 1

DO WHILE lyEntero > 0
liPrimerDigito = 0
liSegundoDigito = 0
liTercerDigito = 0
lcBloque = ""
liBloqueCero = 0
FOR i = 1 TO 3
lnDigito = MOD(lyEntero, 10)
IF lnDigito <> 0 THEN
DO CASE
CASE i = 1
lcBloque = " " + laUnidades(lnDigito)
liPrimerDigito = lnDigito
CASE i = 2
IF lnDigito <= 2 THEN
lcBloque = " " + laUnidades((lnDigito * 10) + liPrimerDigito)
ELSE
lcBloque = " " + laDecenas(lnDigito) + IIF(liPrimerDigito <> 0, " Y", "") + lcBloque
ENDIF
liSegundoDigito = lnDigito
CASE i = 3
lcBloque = " " + IIF(lnDigito = 1 AND liPrimerDigito = 0 AND liSegundoDigito = 0, "CIEN", ;
laCentenas(lnDigito)) + lcBloque
liTercerDigito = lnDigito
ENDCASE
ELSE
liBloqueCero = liBloqueCero + 1
ENDIF
lyEntero = INT(lyEntero / 10)
IF lyentero = 0 THEN
EXIT FOR
ENDIF
ENDFOR
DO CASE
CASE liNumeroBloques = 1
lcLetra = lcBloque
CASE liNumeroBloques = 2
lcLetra = lcBloque + IIF(liBloqueCero <> 3, " MIL", "") + lcLetra
CASE liNumeroBloques = 3
lcLetra = lcBloque + IIF(liPrimerDigito = 1 AND liSegundoDigito = 0 AND liTercerDigito = 0, ;
" MILLON", " MILLONES") + lcLetra
ENDCASE
liNumeroBloques = liNumeroBloques + 1
ENDDO
IF tlDolares THEN
lcLetra = "(" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " DÓLAR ", " DOLARES ") + ;
PADL(ALLTRIM(STR(lyCentavos)), 2, "0") + "/100 USD)"
ELSE
lcLetra = "(" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " PESO ", " PESOS ") + ;
PADL(ALLTRIM(STR(lyCentavos)), 2, "0") + "/100 M.N.)"
ENDIF

RETURN lcLetra
ENDFUNC