Discussion:
Convertir numeros a letras
(demasiado antiguo para responder)
Cesar Ramirez
2004-09-23 19:13:08 UTC
Permalink
Como puedo transformar una cifra como esta $1250,80 a mil doscientos
cincuenta,80/100 USD? Actualmente uso Microsoft Access de Office XP.
Emilio
2004-09-23 19:23:40 UTC
Permalink
Hola Cesar
En google tienes chiquiciens mil opciones
http://www.google.es/search?hl=es&ie=UTF-8&q=%22numeros+a+letras%22&meta=
--
Saludos a ***@s desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/default.aspx?scid=fh;ES-ES;newsreglas
Post by Cesar Ramirez
Como puedo transformar una cifra como esta $1250,80 a mil doscientos
cincuenta,80/100 USD? Actualmente uso Microsoft Access de Office XP.
Eduardo Olaz
2004-09-23 19:39:41 UTC
Permalink
Puedes descargar un ejemplo en Access con la utilización de una clase que
genera cadenas para las diferentes monedas, entre ellas los pesos, euros,
dólares, bolívares, etc...

http://www.olaz.net/descargas/access/numeroaletra.zip

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
Post by Cesar Ramirez
Como puedo transformar una cifra como esta $1250,80 a mil doscientos
cincuenta,80/100 USD? Actualmente uso Microsoft Access de Office XP.
MIKOOS
2004-09-24 02:49:02 UTC
Permalink
Eduardo, ¿tienes todo en construcción en tu página? Por cierto, te encuentro
por akí y aunque no era para mí me he bajado la base que dices, y sólo veo un
formulario que ni siquiera entiendo de donde coge los datos (ya ves que no
controlo mucho de esto)... ¿qué se puede copiar uno (si es que hubiera
función o módulo que copiar) para poder hacer lo mismo?

Gracias !!
MIKOOS
2004-09-24 04:47:01 UTC
Permalink
Ah, ya ví que hay ocultos dos módulos... ¿pero cómo uso yo esas "tripas" para
aplicar en una celda que me "escriba con letras" lo que pone en número en
otra celda de una tabla o consulta (¿o sólo se puede hacer con formularios?)
mía?

;-)
Eduardo Olaz
2004-09-24 07:38:49 UTC
Permalink
Ese fichero tiene dos módulos:
Uno es el CNumeroALetra que es realmente el módulo de clase, y el otro es el
PruebaDeLaClase que en este caso sirve para probar la clase.

Cómo utilizar esto:

Primero copia el módulo de clase CNumeroALetra en tu fichero Access con el
mismo nombre.

Vamos ahora a utilizar la clase.

Supongamos que tenemos una aplicación que necesita poner las cifras en euros
y dólares .
Para ello vamos a crear 2 funciones, una que se llamará Euros y otra que se
llamará Dolares.
En un módulo "normal" escribimos lo siguiente.

Public Function Euros(ByVal Cantidad As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.Numero = Cantidad
Euros = .Texto
End With
End Function

Public Function Dolares(ByVal Cantidad As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmDolar
.Numero = Cantidad
Dolares = .Texto
End With
End Function

Euros(12345.67) devolverá:
doce mil trescientos cuarenta y cinco euros, con sesenta y siete céntimos
Por cierto, redondea el resultado; así Euros(12345.678) devuelve
doce mil trescientos cuarenta y cinco euros, con sesenta y ocho céntimos

Dolares(14938.2607) devolverá:
catorce mil novecientos treinta y ocho dólares, con veintiseis centavos

En la función Euros no formateamos el objeto moneda, como en la función
Dolares
(línea: .FormatearMoneda tmDolar) ya que por defecto, al crear un objeto
del tipo CNumeroALetra se formatea en Euros; al fín y al cabo estoy en
Europa.

La clase tiene otras muchas posibilidades, por ejemplo tiene predefinidas
todas estas monedas mediante la constantes enumerativas del tipo TipoMoneda.
Agradecería cualquier corrección si he metido la pata ;))

Public Enum TipoMoneda
'Sólo contador
tmContador
'Sólo contador
tmContadorFemenino
'España, fuera de circulación...
tmPeseta
' Unión europea
tmEuro
' USA, Australia, Canadá, Nueva Celanda
' Hong Kong, Singapur, etc...
tmDolar
' Colombia, Cuba, Chile, México, Rep.Dominicana
tmPeso
' Urugay
tmPesoUruguayo
' Nicaragua
tmCordoba
' Panamá
tmBalboa
' Bolivia
tmBoliviano
' Costa Rica
tmColon
' Guatemala, El salvador
tmQuetzal
' Honduras
tmLempira
' Paraguay
tmGuarani
' Perú
tmSol
' Venezuela
tmBolivar
' Como ejemplo para usarlo con medidas
tmMilimetros = 100
End Enum

Por ejemplo si queremos crear una función para contar cosas femeninas
haríamos

Public Function ContadorFemenino(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmContadorFemenino
.Numero = Unidades
ContadorFemenino = .Texto
End With
End Function

ContadorFemenino(1201) devolverá
mil doscientas una

si queremos crear una función para contar

Public Function Contador(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmContador
.Numero = Unidades
Contador = .Texto
End With
End Function

Así la línea
Contador ( 255)
devolverá

doscientos cincuenta y uno

Tiene muchas más posibilidades, e incluso genera eventos, como puede
comprobarse en el ejemplo del formulario.

Ahora voy a crear una función para utilizarlo en un tipo de unidad no
contemplado por la clase.
Supongamos que nos piden una función que devuelva el número de kilómetros y
como fracción el número de metros

Haríamos
Public Function Kilometros(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.NombreEntero = "kilómetro"
.NombreEnteros = "kilómetros"
.NombreDecimal = "metro"
.NombreDecimales = "metros"
.Decimales = 3
.Numero = Unidades
Kilometros = .Texto
End With
End Function

Kilometros(125.25) devuelve
ciento veinticinco kilómetros, con doscientos cincuenta metros

Por supuesto que esta clase es manifiéstamente mejorable.
Si queréis hacer cualquier comentario estoy a vuestra disposición.

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @
MIKOOS
2004-09-24 16:53:05 UTC
Permalink
Hola Eduardo, he copiado (copiando de tu base y pegando en la mía) los
módulos CNumeroALetra y PruebaDeLaClase y también he creado, tal y como
decías aquí los módulos siguientes: Contador, ContadorFemenino, Euros y
Dólares.

Voy a una consulta mía, la creo de cero en vista diseño, hago: botón derecho
generador de expresiones > funciones > nuevo aplicación de Microsoft Access
(que aparece al lado de "funciones incorporadas"...
y creo Expr1: Contador([Precio]) (usando la función que originalmente me
aparece como «Expr» Contador («Unidades»)

... Y ME DICE QUE LA FUNCIÓN CONTADOR NO ESTÁ DEFINIDA EN LA EXPRESIÓN...
(mira que le tengo asco a esta pantalla con este mensaje...)

¿por qué me puede estar haciendo eso? ¿qué he hecho mal? MUCHAS GRACIAS

PD: la verdad es que con tener lo mínimo para hacer el recuento de cifras a
letras me vale (pero no me atrevo a quitar las otras funciones creadas
(contadorfemenino, euros, etc.) por si todavía funcionase peor la cosa al
quitarlas...
Eduardo Olaz
2004-09-26 18:11:58 UTC
Permalink
CNumeroAletra debe ser un tipo especial de módulo llamado Módulo de clase

Te mandaré un ejemplo a tu correo

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
Post by MIKOOS
Hola Eduardo, he copiado (copiando de tu base y pegando en la mía) los
módulos CNumeroALetra y PruebaDeLaClase y también he creado, tal y como
decías aquí los módulos siguientes: Contador, ContadorFemenino, Euros y
Dólares.
Voy a una consulta mía, la creo de cero en vista diseño, hago: botón derecho
generador de expresiones > funciones > nuevo aplicación de Microsoft Access
(que aparece al lado de "funciones incorporadas"...
y creo Expr1: Contador([Precio]) (usando la función que originalmente me
aparece como «Expr» Contador («Unidades»)
... Y ME DICE QUE LA FUNCIÓN CONTADOR NO ESTÁ DEFINIDA EN LA EXPRESIÓN...
(mira que le tengo asco a esta pantalla con este mensaje...)
¿por qué me puede estar haciendo eso? ¿qué he hecho mal? MUCHAS GRACIAS
PD: la verdad es que con tener lo mínimo para hacer el recuento de cifras a
letras me vale (pero no me atrevo a quitar las otras funciones creadas
(contadorfemenino, euros, etc.) por si todavía funcionase peor la cosa al
quitarlas...
Eduardo Olaz
2004-09-24 09:07:18 UTC
Permalink
Pues sí, tengo un montón de material e ideas para mi página, pero hasta
ahora no he encontrado el momento para desarrollarla.
Espero que en pocos días pueda materializar todo.

Saludos desde la calle Estafeta de Pamplona:

Eduardo Olaz
Microsoft [MVP] Access

eduardoALGARROBAolaz.net
ALGARROBA = @

La página será www.olaz.net
Post by MIKOOS
Eduardo, ¿tienes todo en construcción en tu página? Por cierto, te encuentro
por akí y aunque no era para mí me he bajado la base que dices, y sólo veo un
formulario que ni siquiera entiendo de donde coge los datos (ya ves que no
controlo mucho de esto)... ¿qué se puede copiar uno (si es que hubiera
función o módulo que copiar) para poder hacer lo mismo?
Gracias !!
MIKOOS
2004-09-25 13:49:02 UTC
Permalink
Eduardo, que esto de los números a letras no me funciona !! He copiado todo
(pero me bastaría con lo mínimo para tener una sola función de recuento...
¿qué hago? ¿por qué dice...

LA FUNCIÓN CONTADOR NO ESTÁ DEFINIDA EN LA EXPRESIÓN ?

Generalmente qué significa esto? es que me sale bastante a menudo en otras
cosas...

GRACIAS !!!!!
Mario R
2004-09-24 01:11:46 UTC
Permalink
HOLA:

POR CURIOSIDAD, YA TE RESPONDIERON.

DE QUE PAIS ERES?, PUEDO TENER LA RESPUESTA.

MUCHO GUSTO Y SALUDOS.
-----Mensaje original-----
Como puedo transformar una cifra como esta $1250,80 a mil
doscientos
cincuenta,80/100 USD? Actualmente uso Microsoft Access de
Office XP.
.
Loading...