¿Cómo convertir números a letras en access 2003?
¿Cómo se debe hacer para convertir importes de números a letras para luego imprimirlos en un recibo?
1 Respuesta
Respuesta de dayvitt
2
2
Si, perfectamente. Pero lo que busco es transformar en letras esos importes. Por lo que he visto es a través de un código. Lo cierto es que, si esto es así, no se como crearlo. Esto se debe a que no tengo mucho conocimiento. Espero tu respuesta.
No, si el importe es "24,51" busco que en el recibo diga "veinticuatro con cincuenta y un centavos" o en su defecto "veinticuatro con 51/100". Este proceso debería ser automático pero no se como hacerlo. Espero tu respuesta
Se necesitaria un codigo VB para hacerlo.
Me puedes decir el nombre de la textbox que contiene el formato numero, ¿y el nombre de la textbox donde hay que almacenar el formato texto?
Me puedes decir el nombre de la textbox que contiene el formato numero, ¿y el nombre de la textbox donde hay que almacenar el formato texto?
En realidad no se que es textbox, yo hago un calculo matemático a través de las consultas y ese resultado (numérico) quiero expresarlo en letras también. De manera que en el informe se vea reflejado la expresión alfabética del resultado numérico.
Estoy utilizando la base de access 2003 con sus tablas, formulario, consultas, consultas de acción de creación de tablas e informes. Espero tu respuesta
Estoy utilizando la base de access 2003 con sus tablas, formulario, consultas, consultas de acción de creación de tablas e informes. Espero tu respuesta
Bien,
Pues en el formulario que usas sobre la consulta o tabla donde tienes ese campo numérico, si vas a diseño, en propiedades del recuadro donde aparecen los datos (textbox), hay un apartado que pone "nombre"
Pues eso te pido. El nombre del recuadro numérico y el nombre del recuadro donde quieres guardar el valor en texto
Pues en el formulario que usas sobre la consulta o tabla donde tienes ese campo numérico, si vas a diseño, en propiedades del recuadro donde aparecen los datos (textbox), hay un apartado que pone "nombre"
Pues eso te pido. El nombre del recuadro numérico y el nombre del recuadro donde quieres guardar el valor en texto
Creo que entendí: fui al formulario, luego a vista diseño y luego propiedades. El nombre del recuadro numérico es "TOTAL" y donde quiero el valor en texto es "texto22". Espero tu respuesta.
Bien,
Primero de todo decir que me lo he pasado genial haciendo el código. Muchas gracias.
Lo he hecho para números hasta 9999,99, si deseas más me lo dices que programo más.
Debes cambiar el nombre del texto destino de "texto22" a "Texto" a secas.
En el procedimiento del evento "al perder enfoque" de TOTAL, generale un código y ponle lo siguiente.
Dim mil, cen, dec, un, udec, ucen As Integer
Dim total As Double
Texto.Value = ""
mil = 0
cen = 0
dec = 0
un = 0
udec = 0
ucen = 0
total = Numero.Value
Do Until total < 1000
mil = mil + 1
total = total - 1000
Loop
Do Until total < 100
cen = cen + 1
total = total - 100
Loop
Do Until total < 10
dec = dec + 1
total = total - 10
Loop
Do Until total < 1
un = un + 1
total = total - 1
Loop
Do Until total < 0.1
udec = udec + 1
total = total - 0.1
Loop
Do Until total < 0.009
ucen = ucen + 1
total = total - 0.01
Loop
If mil > 1 Then
nombreunidad (mil)
End If
If mil > 0 Then
Texto = Texto & " mil"
End If
If cen > 1 Then
If cen = 5 Then
Texto = Texto & " quinientos"
Else
Texto = Texto & " "
If cen = 7 Or cen = 9 Then
nombreunidad (cen * 100)
Else
nombreunidad (cen)
End If
Texto = Texto & "cientos"
End If
Else
If cen = 1 Then
If dec > 0 Or un > 0 Then
Texto = Texto & " ciento"
Else
Texto = Texto & " cien"
End If
End If
End If
If dec > 0 Then
total = dec * 10 + un
nombredecena (total)
Else
If un > 0 Then
Texto = Texto & " "
nombreunidad (un)
End If
End If
If udec > 0 Or ucen > 0 Then
Texto = Texto & " con"
If udec > 0 Then
total = udec * 10 + ucen
nombredecena (total)
Else
If ucen > 0 Then
nombreunidad (ucen)
End If
End If
End If
------------------------------------------------------------------------------------------
Y después debajo de "Option Compare Database" y encima del "Private Sub" le pegas las funciones siguientes.
Sub nombreunidad(num As Integer)
Select Case num
Case 1
Texto = Texto & "uno"
Case 2
Texto = Texto & "dos"
Case 3
Texto = Texto & "tres"
Case 4
Texto = Texto & "cuatro"
Case 5
Texto = Texto & "cinco"
Case 6
Texto = Texto & "seis"
Case 7
Texto = Texto & "siete"
Case 8
Texto = Texto & "ocho"
Case 9
Texto = Texto & "nueve"
Case 700
Texto = Texto & "sete"
Case 900
Texto = Texto & "nove"
End Select
End Sub
Sub nombredecena(num As Integer)
Dim dec, un
dec = 0
un = 0
Do Until num < 10
dec = dec + 1
num = num - 10
Loop
Do Until num < 1
un = un + 1
num = num - 1
Loop
Select Case dec
Case 1
Select Case un
Case 0
Texto = Texto & " diez"
Case 1
Texto = Texto & " once"
Case 2
Texto = Texto & " doce"
Case 3
Texto = Texto & " trece"
Case 4
Texto = Texto & " catorce"
Case 5
Texto = Texto & " quince"
Case 6
Texto = Texto & " dieciseis"
Case 7
Texto = Texto & " diecisiete"
Case 8
Texto = Texto & " dieciocho"
Case 9
Texto = Texto & " diecinueve"
End Select
Case 2
Texto = Texto & " veint"
If un = 0 Then
Texto = Texto & "e"
Else
Texto = Texto & "i"
End If
Case 3
Texto = Texto & " treinta"
Case 4
Texto = Texto & " cuarenta"
Case 5
Texto = Texto & " cincuenta"
Case 6
Texto = Texto & " sesenta"
Case 7
Texto = Texto & " setenta"
Case 8
Texto = Texto & " ochenta"
Case 9
Texto = Texto & " noventa"
End Select
If dec > 2 And un > 0 Then
Texto = Texto & " y "
End If
If dec > 1 And un > 0 Then
nombreunidad (un)
End If
End Sub
Primero de todo decir que me lo he pasado genial haciendo el código. Muchas gracias.
Lo he hecho para números hasta 9999,99, si deseas más me lo dices que programo más.
Debes cambiar el nombre del texto destino de "texto22" a "Texto" a secas.
En el procedimiento del evento "al perder enfoque" de TOTAL, generale un código y ponle lo siguiente.
Dim mil, cen, dec, un, udec, ucen As Integer
Dim total As Double
Texto.Value = ""
mil = 0
cen = 0
dec = 0
un = 0
udec = 0
ucen = 0
total = Numero.Value
Do Until total < 1000
mil = mil + 1
total = total - 1000
Loop
Do Until total < 100
cen = cen + 1
total = total - 100
Loop
Do Until total < 10
dec = dec + 1
total = total - 10
Loop
Do Until total < 1
un = un + 1
total = total - 1
Loop
Do Until total < 0.1
udec = udec + 1
total = total - 0.1
Loop
Do Until total < 0.009
ucen = ucen + 1
total = total - 0.01
Loop
If mil > 1 Then
nombreunidad (mil)
End If
If mil > 0 Then
Texto = Texto & " mil"
End If
If cen > 1 Then
If cen = 5 Then
Texto = Texto & " quinientos"
Else
Texto = Texto & " "
If cen = 7 Or cen = 9 Then
nombreunidad (cen * 100)
Else
nombreunidad (cen)
End If
Texto = Texto & "cientos"
End If
Else
If cen = 1 Then
If dec > 0 Or un > 0 Then
Texto = Texto & " ciento"
Else
Texto = Texto & " cien"
End If
End If
End If
If dec > 0 Then
total = dec * 10 + un
nombredecena (total)
Else
If un > 0 Then
Texto = Texto & " "
nombreunidad (un)
End If
End If
If udec > 0 Or ucen > 0 Then
Texto = Texto & " con"
If udec > 0 Then
total = udec * 10 + ucen
nombredecena (total)
Else
If ucen > 0 Then
nombreunidad (ucen)
End If
End If
End If
------------------------------------------------------------------------------------------
Y después debajo de "Option Compare Database" y encima del "Private Sub" le pegas las funciones siguientes.
Sub nombreunidad(num As Integer)
Select Case num
Case 1
Texto = Texto & "uno"
Case 2
Texto = Texto & "dos"
Case 3
Texto = Texto & "tres"
Case 4
Texto = Texto & "cuatro"
Case 5
Texto = Texto & "cinco"
Case 6
Texto = Texto & "seis"
Case 7
Texto = Texto & "siete"
Case 8
Texto = Texto & "ocho"
Case 9
Texto = Texto & "nueve"
Case 700
Texto = Texto & "sete"
Case 900
Texto = Texto & "nove"
End Select
End Sub
Sub nombredecena(num As Integer)
Dim dec, un
dec = 0
un = 0
Do Until num < 10
dec = dec + 1
num = num - 10
Loop
Do Until num < 1
un = un + 1
num = num - 1
Loop
Select Case dec
Case 1
Select Case un
Case 0
Texto = Texto & " diez"
Case 1
Texto = Texto & " once"
Case 2
Texto = Texto & " doce"
Case 3
Texto = Texto & " trece"
Case 4
Texto = Texto & " catorce"
Case 5
Texto = Texto & " quince"
Case 6
Texto = Texto & " dieciseis"
Case 7
Texto = Texto & " diecisiete"
Case 8
Texto = Texto & " dieciocho"
Case 9
Texto = Texto & " diecinueve"
End Select
Case 2
Texto = Texto & " veint"
If un = 0 Then
Texto = Texto & "e"
Else
Texto = Texto & "i"
End If
Case 3
Texto = Texto & " treinta"
Case 4
Texto = Texto & " cuarenta"
Case 5
Texto = Texto & " cincuenta"
Case 6
Texto = Texto & " sesenta"
Case 7
Texto = Texto & " setenta"
Case 8
Texto = Texto & " ochenta"
Case 9
Texto = Texto & " noventa"
End Select
If dec > 2 And un > 0 Then
Texto = Texto & " y "
End If
If dec > 1 And un > 0 Then
nombreunidad (un)
End If
End Sub
Impresionante, fabuloso. Lo resumo en dos palabras: Espec Tacular. Pero necesito más números porque tengo recibos de cinco cifras. Es decir 52.572,30 por ejemplo. Lo probé y fue sensacional. Ahora espero me des la ultima mano agregando las cifras que me faltan. Desde ya muchísimas gracias. Sos un genio
Bien,
Sustituye el código de "al perder enfoque" de lo que tengas por:
Dim dmil, mil, cen, dec, un, udec, ucen As Integer
Dim total As Double
Texto.Value = ""
dmil = 0
mil = 0
cen = 0
dec = 0
un = 0
udec = 0
ucen = 0
total = Numero.Value
Do Until total < 10000
dmil = dmil + 1
total = total - 10000
Loop
Do Until total < 1000
mil = mil + 1
total = total - 1000
Loop
Do Until total < 100
cen = cen + 1
total = total - 100
Loop
Do Until total < 10
dec = dec + 1
total = total - 10
Loop
Do Until total < 1
un = un + 1
total = total - 1
Loop
Do Until total < 0.1
udec = udec + 1
total = total - 0.1
Loop
Do Until total < 0.009
ucen = ucen + 1
total = total - 0.01
Loop
If dmil > 0 Then
total = dmil * 10 + mil
nombredecena (total)
If mil = 1 Then
Texto = Left(Texto, Len(Texto) - 1)
End If
Else
If mil > 1 Then
nombreunidad (mil)
End If
End If
If mil > 0 Or dmil > 0 Then
Texto = Texto & " mil"
End If
If cen > 1 Then
If cen = 5 Then
Texto = Texto & " quinientos"
Else
Texto = Texto & " "
If cen = 7 Or cen = 9 Then
nombreunidad (cen * 100)
Else
nombreunidad (cen)
End If
Texto = Texto & "cientos"
End If
Else
If cen = 1 Then
If dec > 0 Or un > 0 Then
Texto = Texto & " ciento"
Else
Texto = Texto & " cien"
End If
End If
End If
If dec > 0 Then
total = dec * 10 + un
nombredecena (total)
Else
If un > 0 Then
Texto = Texto & " "
nombreunidad (un)
End If
End If
If udec > 0 Or ucen > 0 Then
Texto = Texto & " con"
If udec > 0 Then
total = udec * 10 + ucen
nombredecena (total)
Else
If ucen > 0 Then
nombreunidad (ucen)
End If
End If
End If
Sustituye el código de "al perder enfoque" de lo que tengas por:
Dim dmil, mil, cen, dec, un, udec, ucen As Integer
Dim total As Double
Texto.Value = ""
dmil = 0
mil = 0
cen = 0
dec = 0
un = 0
udec = 0
ucen = 0
total = Numero.Value
Do Until total < 10000
dmil = dmil + 1
total = total - 10000
Loop
Do Until total < 1000
mil = mil + 1
total = total - 1000
Loop
Do Until total < 100
cen = cen + 1
total = total - 100
Loop
Do Until total < 10
dec = dec + 1
total = total - 10
Loop
Do Until total < 1
un = un + 1
total = total - 1
Loop
Do Until total < 0.1
udec = udec + 1
total = total - 0.1
Loop
Do Until total < 0.009
ucen = ucen + 1
total = total - 0.01
Loop
If dmil > 0 Then
total = dmil * 10 + mil
nombredecena (total)
If mil = 1 Then
Texto = Left(Texto, Len(Texto) - 1)
End If
Else
If mil > 1 Then
nombreunidad (mil)
End If
End If
If mil > 0 Or dmil > 0 Then
Texto = Texto & " mil"
End If
If cen > 1 Then
If cen = 5 Then
Texto = Texto & " quinientos"
Else
Texto = Texto & " "
If cen = 7 Or cen = 9 Then
nombreunidad (cen * 100)
Else
nombreunidad (cen)
End If
Texto = Texto & "cientos"
End If
Else
If cen = 1 Then
If dec > 0 Or un > 0 Then
Texto = Texto & " ciento"
Else
Texto = Texto & " cien"
End If
End If
End If
If dec > 0 Then
total = dec * 10 + un
nombredecena (total)
Else
If un > 0 Then
Texto = Texto & " "
nombreunidad (un)
End If
End If
If udec > 0 Or ucen > 0 Then
Texto = Texto & " con"
If udec > 0 Then
total = udec * 10 + ucen
nombredecena (total)
Else
If ucen > 0 Then
nombreunidad (ucen)
End If
End If
End If
- Compartir respuesta
- Anónimo
ahora mismo