Traduccion de numeros en letras en foxpro 2.5

24/01/2004 - 02:32 por CARLOS | Informe spam
necesitaria saber como hacer o que comando emplear par traducir numeros en
letras, o sea que escriba un numero y me lo escriba en letras.

gracias

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
24/01/2004 - 02:51 | Informe spam
Mira en PortalFox:

Enviado por: Luis Maria Guayán
http://www.portalfox.com/article.php?sid$


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos



"CARLOS" escribió en el mensaje
news:%
necesitaria saber como hacer o que comando emplear par traducir numeros en
letras, o sea que escriba un numero y me lo escriba en letras.

gracias


Respuesta Responder a este mensaje
#2 Mario Bucio
25/01/2004 - 08:48 | Informe spam
Hola... esta rutina me funciona

Hay que estudiarla y si aplica
a tus necesidades implementala
en tu desarrollo.

******************** PROCEDIMIENTO MONTO ************************
*Este parametro Recibe un Valor Númerico
*Asi lo Valida
* si lo vas utilizar desde dentro de un Form enviale
* como parametro el numero
* a convertir en letras.
* en este ejemplo le coloco directamente el valor a
* convertir.
Lparameters lnValor
Local lnImporte,lcImpLetra
lnValor=Val(ThisForm.lImporte.Caption)
IF lnvalor <= 0
Return
Endif
* Le devuelvo la parte enetra del Valor a la variable EnteroV
ENTEROV=Int(lnValor)
N = ""
N1 = "UN"
N2 = "DOS"
N3 = "TRES"
N4 = "CUATRO"
N5 = "CINCO"
N6 = "SEIS"
N7 = "SIETE"
N8 = "OCHO"
N9 = "NUEVE"
N10 = "DIEZ"
N11 = "ONCE"
N12 = "DOCE"
N13 = "TRECE"
N14 = "CATORCE"
N15 = "QUINCE"
N16 = "DIECISEIS"
N17 = "DIECISIETE"
N18 = "DIECIOCHO"
N19 = "DIECINUEVE"
N20 = "VEINTE"
N30 = "TREINTA"
N40 = "CUARENTA"
N50 = "CINCUENTA"
N60 = "SESENTA"
N70 = "SETENTA"
N80 = "OCHENTA"
N90 = "NOVENTA"
If ENTEROV <> 100
N100 = "CIENTO"
EndIf
IF ENTEROV = 100
N100="CIEN"
ENDIF
N200 = "DOSCIENTOS"
N300 = "TRESCIENTOS"
N400 = "CUATROCIENTOS"
N500 = "QUINIENTOS"
N600 = "SEISCIENTOS"
N700 = "SETECIENTOS"
N800 = "OCHOCIENTOS"
N900 = "NOVECIENTOS"
CONTADOR = 1
INICIO = 1
CADENA = Str(ENTEROV,9)
NUMP = " "
Do While CONTADOR < 4
SUBCADENA = SUBSTR(CADENA,INICIO, 3)
CENTENA = SUBSTR(SUBCADENA,1,1)+"00"
DECENA = SUBSTR(SUBCADENA,2,2)
UNIDAD = SUBSTR(SUBCADENA,3,1)
IF VAL(SUBCADENA) > 99
NUMP = NUMP + N&CENTENA + " "
ENDIF (SUBCADENA > 99)
T = VAL(DECENA)
IF T > 0
DO CASE
CASE (INT(T/10.0) = T/10.0) .OR. (T > 9 .AND. T < 20)
NUMP = NUMP + N&DECENA
CASE T > 9 .AND. (INT(T/10.0) # T/10.0)
DECENA = SUBSTR(DECENA,1,1) + "0"
IF DECENA # "20"
NUMP = NUMP + N&DECENA + " Y " + N&UNIDAD
ELSE
NUMP = NUMP + "VENTI" + N&UNIDAD
ENDIF
CASE T < 10
NUMP = NUMP + N&UNIDAD
ENDCASE
ENDIF (T > 0)

IF ENTEROV > 999999 .AND. CONTADOR = 1
NUMP = NUMP + " MILLONES "
ENDIF
IF NUMP = " UNO MILLONES "
NUMP = " UN MILLON "
ENDIF
IF NUMP = " CIENTO MIL "
NUMP = " CIEN MIL "
ENDIF

IF ENTEROV > 999 .AND. CONTADOR = 2 .AND. VAL(SUBCADENA) > 0
NUMP = NUMP + " MIL "
ENDIF
IF NUMP = " UNO MIL "
NUMP = " MIL "
ENDIF
INICIO = CONTADOR * 3 + 1
CONTADOR = CONTADOR + 1
ENDDO
CENTAV = lnValor-INT(lnValor)
CENTAV = ROUND((CENTAV*100),0)
CENTAV = INT(CENTAV)
CENTAV = STR(CENTAV,2)
CENTAV = STRTRAN(CENTAV," ","0")
lcImpLetra = + NUMP + " PESOS " + CENTAV + "/100 M.N."
ThisForm.CantidadLetra=lcImpLetra
Return


*** No es mía... seguramente de www.portalfox.com la bajé.

Saludos.
Mario Bucio
Uruapan, Michoacán, México
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida