¿Cómo puedo pasar un valor de tipo numérico a tipo texto mediante una función en access?

Por favor, necesito ayuda para convertir números a letras en una bd facturas
Gracias

1 Respuesta

Respuesta
1
Esta función no es mía, la saque de la web de BÚHO. Pero esta bastante bien. Has de meterla en un módulo.
Function CONVIERTEEUROS(ByVal NUM As Variant) As String
Dim C As String: C = ""
Dim A As Double
Dim Un As Byte
Dim De As Byte
Dim Ce As Byte
Dim Un_Ma As Byte
Dim De_Ma As Byte
Dim Ce_Ma As Byte
Dim Un_Mo As Byte
Dim De_Mo As Byte
Dim Ce_Mo As Byte
Dim Un_Ma_Mo As Byte
Dim De_Ma_Mo As Byte
Dim Ce_Ma_Mo As Byte
Dim G As String 'genero.
Dim A2 As String
Dim F As Double
Dim D As String
Dim BO As Boolean
Dim Deci As String
Dim Ente As String
Dim Bo_Deci As Boolean
Dim AD As Double
Dim Un_De As Byte
Dim De_De As Byte
Dim Ce_De As Byte
Dim E As String
Dim Ant_D As String
' adaptación del programa a un entorno externo
Dim Moneda_Programa As String 'Eur/Pts
Moneda_Programa = "Eur"
' adaptación del programa a un entorno externo
NUM = CONTROL_CDEC(NUM)
Select Case Moneda_Programa
Case "Pts"
G = "a"
NUM = Round(NUM)
Case "Eur"
G = "o"
End Select
A2 = CStr(NUM)
Ente = ""
Deci = ""
BO = False
Bo_Deci = False
For F = 1 To Len(A2)
D = Mid(A2, F, 1)
If D = "." Then D = ","
If D = "," Then BO = True: D = "": Bo_Deci = True
Select Case BO
Case False
Ente = Ente + D
Case True
Deci = Deci + D
End Select
Next F
If Len(Deci) > 3 Then Deci = Left(LTrim(Deci), 3)
A = CDbl(Ente)
If Bo_Deci = True Then AD = CDbl(Deci)
If A > 999999999999# Then CONVIERTEEUROS = CStr(NUM): Exit Function
'<UNIDADES>
Un = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<UNIDADES>
'<DECENAS>
De = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<DECENAS>
'<CENTENAS>
Ce = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<CENTENAS>
'
'<UNIDADES DE MILLAR>
Un_Ma = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<UNIDADES DE MILLAR>
'<DECENAS DE MILLAR>
De_Ma = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<DECENAS DE MILLAR>
'<CENTENAS DE MILLAR>
Ce_Ma = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<CENTENAS DE MILLAR>
'
'<UNIDADES DE MILLON>
Un_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<UNIDADES DE MILLON>
'<DECENAS DE MILLON>
De_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<DECENAS DE MILLON>
'<CENTENAS DE MILLON>
Ce_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<CENTENAS DE MILLON>
'
'<UNIDADES DE MILLAR DE MILLON>
Un_Ma_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<UNIDADES DE MILLAR DE MILLON>
'<DECENAS DE MILLAR DE MILLON>
De_Ma_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<DECENAS DE MILLAR DE MILLON>
'<CENTENAS DE MILLAR DE MILLON>
Ce_Ma_Mo = Right("0" + CStr(A), 1)
A = Int(A / 10)
'<CENTENAS DE MILLAR DE MILLON>
C = ""
'<TRASPASO DE CENTENAS DE MILLAR DE MILLON>
Select Case Ce_Ma_Mo
Case 1
If (Un_Ma_Mo = 0 And De_Ma_Mo = 0) Then
C = C + "cien mil"
Else
C = C + "ciento"
End If
Case 2
C = C + &quo
Keok mi mail: [email protected]
Keok: copié el código para que se ejecute con el evento " al presionar una tecla", pero me arroja error de compilación por la falta de un " end sub" ¿Qué hago mal?, ¿Cuál es el evento adecuado para que se ejecute?
Gracias
Perdona pero es cierto
Sabes lo que pasa es que hice un copy paste y se ha copiado solo un trozo. Lo que ha debido de pasar es que no cabe más por respuesta.
Así que si me das tu email te lo envío en un archivo.
Ya me dirás algo.
Te envíe un email pero me lo ha devuelto, así que te contesto de nuevo por aquí.
Bueno el código que te pase lo has de poner como ya te dije en un módulo que ya tengas creado o uno nuevo, como tu quieras.
Luego como según me comententas tienes dos cuadros de texto (llamémosle texto1, texto2), donde texto1 es donde metes una cifra numérica y texto2 es donde tiene que aparecer su equivalente en letras. Lo que tienes que hacer es poner (en las propiedades del texto2) en el origen del control=CONVIERTEEUROS(texto1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas