La Web del Programador: Comunidad de Programadores
 
    Pregunta:  635 - CONVERTIR NUMERO A LETRAS
Autor:  Marlon Lazo
A mí me gustaria saber cómo podría hacer en Visual Fox una función, procedimiento ó programa que me convierta un número X en letras por ej: si se introduce 2 el despliegue DOS, si se introduce 103 el despliegue CIENTO TRES, si se introduce 444 el despliegue CUATRO CIENTOS CUARENTA Y CUATRO.

Por su ayuda, muchas gracias


  Respuesta:  Guadalupe Leija Flores
USO (a un mensaje): wait wind numatexto(4589.27)

*********************************************
***Funcion para convertir numeros a textos***
*** PRINCIPAL ***
*********************************************
func numatexto
para numero
store padl(alltrim(str(numero,12,2)),12,'0') to texto
store substr(texto,1,3) to millones
store substr(texto,4,3) to miles
store substr(texto,7,3) to cientos
store substr(texto,11,2) to decimales
store space(0) to texto
txtmillones=conviertecifra(millones,1)
txtmiles=conviertecifra(miles,0)
txtcientos=conviertecifra(cientos,0)
if len(alltrim(txtmillones))>0
if alltrim(txtmillones)="UN"
texto=txtmillones+" MILLON"
else
texto=txtmillones+" MILLONES"
endif
endif
if len(alltrim(txtmiles))>0
texto=texto+space(1)+txtmiles+" MIL"
endif
if alltrim(txtmiles+txtcientos)="UN"
texto=texto+"UNO CON "+decimales+"/100"
else
texto=texto+space(1)+alltrim(txtcientos)+" PESOS "+decimales+"/100"
endif
return texto
*********************************************
***Funcion para convertir numeros a textos***
*** SECUNDARIA ***
*********************************************
func conviertecifra
para texto,sw
centena=substr(texto,1,1)
decena =substr(texto,2,1)
unidad =substr(texto,3,1)
txtcentena=funcentena(centena,decena,unidad)
txtdecena=fundecena(decena,unidad)
txtunidad=fununidad(decena,unidad)
return txtcentena+space(1)+txtdecena+txtunidad
*********************************************
***Funcion para convertir numeros a textos***
*** CENTENAS ***
*********************************************
func funcentena
para centena,decena,unidad
do case
case centena="1"
txtcentena="CIENTO"
if decena+unidad="00"
txtcentena="CIEN"
endif
case centena="2"
txtcentena="DOSCIENTOS"
case centena="3"
txtcentena="TRESCIENTOS"
case centena="4"
txtcentena="CUATROCIENTOS"
case centena="5"
txtcentena="QUINIENTOS"
case centena="6"
txtcentena="SEISCIENTOS"
case centena="7"
txtcentena="SETECIENTOS"
case centena="8"
txtcentena="OCHOCIENTOS"
case centena="9"
txtcentena="NOVECIENTOS"
case centena="0"
txtcentena=""
endcase
return txtcentena
*********************************************
***Funcion para convertir numeros a textos***
*** DECENAS ***
*********************************************
Func fundecena
para decena,unidad
do case
case decena="1"
txtdecena="DIEZ"
do case
case unidad="1"
txtdecena="ONCE"
case unidad="2"
txtdecena="DOCE"
case unidad="3"
txtdecena="TRECE"
case unidad="4"
txtdecena="CATORCE"
case unidad="5"
txtdecena="QUINCE"
case unidad="6"
txtdecena="DIECISEIS"
case unidad="7"
txtdecena="DIECISIETE"
case unidad="8"
txtdecena="DIECIOCHO"
case unidad="9"
txtdecena="DIECINUEVE"
endcase
case decena="2"
txtdecena="VEINTE"
if unidad<>"0"
txtdecena="VEINTI"
endif
case decena="3"
txtdecena="TREINTA"
if unidad<>"0"
txtdecena="TREINTA Y "
endif
case decena="4"
txtdecena="CUERENTA"
if unidad<>"0"
txtdecena="CUARENTA Y "
endif
case decena="5"
txtdecena="CINCUENTA"
if unidad<>"0"
txtdecena="CINCUENTA Y "
endif
case decena="6"
txtdecena="SESENTA"
if unidad<>"0"
txtdecena="SESENTA Y "
endif
case decena="7"
txtdecena="SETENTA"
if unidad<>"0"
txtdecena="SETENTA Y "
endif
case decena="8"
txtdecena="OCHENTA"
if unidad<>"0"
txtdecena="OCHENTA Y "
endif
case decena="9"
txtdecena="NOVENTA"
if unidad<>"0"
txtdecena="NOVENTA Y "
endif
case decena="0"
txtdecena=""
endcase
return txtdecena
*********************************************
***Funcion para convertir numeros a textos***
*** UNIDADES ***
*********************************************
Func fununidad
para decena,unidad
if decena<>"1"
do case
case unidad="1"
if sw=1
txtunidad="UNO"
else
txtunidad="UN"
endif
case unidad="2"
txtunidad="DOS"
case unidad="3"
txtunidad="TRES"
case unidad="4"
txtunidad="CUATRO"
case unidad="5"
txtunidad="CINCO"
case unidad="6"
txtunidad="SEIS"
case unidad="7"
txtunidad="SIETE"
case unidad="8"
txtunidad="OCHO"
case unidad="9"
txtunidad="NUEVE"
case unidad="0"
txtunidad=""
endcase
else
txtunidad=""
endif
return txtunidad

  Respuesta:  Pul Martinez
Diseñe un procedimiento utilizando tres bases de datos, en las cuales aloje asi:
las unidades: uno,dos,tres,cuatro,...nueve
las decenas: diez,veinte,treinta,cuarenta,...noventa
las centenas: cien,doscientos,trescientos,...novecientos
y la rutina lee el numero convirtiendolo primero a una cadena de caracteres, separando de tres en tres las cifras y en combinacion con las palabras millon, millones, mil, etc me funciona a la perfeccion
si me escribes te la puedo enviar

  Respuesta:  MARIO FLORES ARIZACA
Tengo una rutina que la utilizó en multiples aplicaciones, si la requiere por favor me escribe tanto para foxpro 2.6 DOS y para Visual Foxpro 5.0 para Windows

  Respuesta:  Néstor Torres
Tengo una rutina que la utilizó en multiples aplicaciones, si la requiere por favor me escribe

  Respuesta:  David Fúnez
Busca en la sección de archivos de http://www.portalfox.com ahí hay una función que convierte de números a letras.

  Respuesta:  William Finol
Hola, amigo Marlon. tengo una función en Visual Foxpro que convierte cualquier numero decimal a letras. Escribeme al mi correo y te envio un form y su función. Es bastante efectiva, nunca me ha fallado...

Ok.

  Respuesta:  Ronald Najera Gonzalez
Marlon: Si no haz encontrado la respuesta a tu problema tengo un programa que lo convierte. Actualmente lo utilizo para imprimir cheques y nunca me ha fallado Yo no lo hice me lo proporciono un profesor y con gusto si lo necesitas te lo puedo proporcionar.

  Respuesta:  Alejandro Salvador Vargas
Amigo:

Tengo una fución que utilizo para unas facturas, esta función convirte números de hasta 15 caracteres de longitud, no es una función muy buena, pero al menos funciona. Si la deseas o alguien la desea, escríbanme a [email protected]

Saludos

  Respuesta:  Xavi Vila
En el apartado de Biblioteca de Temas de La Web del Programador, esta el código que realiza la conversión.

  Respuesta:  Jeg
Hola amigo, yo tengo una función que hace lo que tu quieres, pero no te lo explico aqui porque es un poco largo ya que convierte numeros hasta 999999999, también tengo un control activex. Escríbeme y te lo enviaré. Saludos