¿Cómo convertir números a letras en un formulario de Visual Fox Pro?

Sabes como convertir números a letras en un formulario de foxpro
Puedes mandarme un ejemplo con un formulario y lo demás
mi correo en [email protected]

1 respuesta

Respuesta
1
La función que yo utilizo tiene el siguiente código, te recomiendo que la copies, la pegues en algún PRG o Método, y cada vez que la llames le pases por parámetro el número a convertir:
LPARAMETERS tnnumero  && Recibe el número a convertir
DIMENSION unid(9)
unid(1) = "UNO"
unid(2) = "DOS"
unid(3) = "TRES"
unid(4) = "CUATRO"
unid(5) = "CINCO"
unid(6) = "SEIS"
unid(7) = "SIETE"
unid(8) = "OCHO"
unid(9) = "NUEVE"
DIMENSION dieci(10)
dieci(1) = "DIEZ"
dieci(2) = "ONCE"
dieci(3) = "DOCE"
dieci(4) = "TRECE"
dieci(5) = "CATORCE"
dieci(6) = "QUINCE"
dieci(7) = "DIECISEIS"
dieci(8) = "DIECISIETE"
dieci(9) = "DIECIOCHO"
dieci(10) = "DIECINUEVE"
DIMENSION dec(9)
dec(3) = "TREINTA"
dec(4) = "CUARENTA"
dec(5) = "CINCUENTA"
dec(6) = "SESENTA"
dec(7) = "SETENTA"
dec(8) = "OCHENTA"
dec(9) = "NOVENTA"
DIMENSION cen(9)
cen(2) = "DOSCIENTOS"
cen(3) = "TRESCIENTOS"
cen(4) = "CUATROCIENTOS"
cen(5) = "QUINIENTOS"
cen(6) = "SEISCIENTOS"
cen(7) = "SETECIENTOS"
cen(8) = "OCHOCIENTOS"
cen(9) = "NOVECIENTOS"
p_entera = INT(tnnumero)
p_decimal = ROUND(tnnumero - p_entera,2)
numcad = ALLTRIM(STR(p_entera))
texto = ""
valant = 0
FOR k = 1 TO LEN(numcad)
lugar = SUBSTR(numcad,LEN(numcad)-k+1,1) && Lugar Actual
IF k # LEN(numcad)
despu = SUBSTR(numcad,LEN(numcad)-k,1) && Lugar Pr¢ximo
valdes = VAL(despu)
ELSE
despu = ""
valdes = 0
ENDIF
valug = VAL(lugar)
agre = ""
DO CASE
CASE k = 1 .OR. k = 4
DO CASE
CASE valdes = 1
IF valug = 0
agre = "DIEZ"
ELSE
agre = dieci(valug + 1)
ENDIF
CASE valdes = 2
IF valug = 0
agre = "VEINTE"
ELSE
IF k = 4 .AND. valug = 1
agre = "VEINTIUN"
ELSE
agre = "VEINTI"+unid(valug)
ENDIF
ENDIF
OTHERWISE
IF valdes # 0
agre = dec(valdes) + IIF(valug # 0," Y ","")
ENDIF
IF valug # 0
IF k = 4 .AND. valug = 1
agre = agre + "UN"
ELSE
agre = agre + unid(valug)
ENDIF
ENDIF
ENDCASE
IF k = 4
IF LEN(numcad) = 7 .AND. SUBSTR(numcad,2,3) = "000"
agre = agre + " "
ELSE
agre = agre + " MIL "
ENDIF
ENDIF
CASE k = 3 .OR. k = 6
IF valug = 1
DO CASE
CASE k = 6 .AND. SUBSTR(numcad,LEN(numcad)-4,2)="00"
vasolo = .T.
CASE k = 3 .AND. SUBSTR(numcad,LEN(numcad)-1,2)="00"
vasolo = .T.
OTHERWISE
vasolo = .F.
ENDCASE
IF EMPTY(texto) .OR. vasolo
agre = "CIEN"
ELSE
agre = "CIENTO" + " "
ENDIF
ELSE
IF valug # 0
agre = cen(valug) + " "
ENDIF
ENDIF
CASE k = 7
IF valug = 1
agre = "UN MILLON "
ELSE
agre = unid(valug)+" MILLONES "
ENDIF
ENDCASE
texto = agre + texto
valant = valug
ENDFOR
texto = ALLTRIM(texto)
p_decimal = p_decimal * 100
texto = texto + " c/" + TRANSFORM(p_decimal,"99") + " centavos"
RETURN ( texto )
*Salu2!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas