¿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

1 respuesta

1
Respuesta de
¿No te imprime los números?
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.
Es decir que si tienes un numero 24, ¿te ponga la letra "A"?
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?
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
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
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
Ah, perdona, tienes que cambiar el nombre del textbox "TOTAL" por "Numero"
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
Dime el valor máximo por favor
El valor máximo es 99.999,99.
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
Perfecto, anda perfecto. Te agradezco muchísimo.
De nada, finaliza la pregunta cuando puedas y no dudes en preguntarme de nuevo si te salen más dudas
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Access o hacer tu propia pregunta: