HENRY_DAVID | |
| 2007-07-05 20:47 - Respuestas: 3 - Tema nº: 2456048
Características: Windows XP Profesional, 256,1.8,40.
Hola amigos quisiera saber si puedo convertir los números que tengo en mi campo Montos en texto, es decir si en el campo Montos tengo 10 me diga en otro campo: diez. Espero que me haygan entendido, Gracias.
| |
|
|
swissman | |
|
Re: Números a texto en access - 2007-07-05 20:49 - Respuesta 2
hasta que numero quieres que te haga esto? | |
|
|
HENRY_DAVID | |
|
Re: Números a texto en access - 2007-07-06 18:02 - Respuesta 3
hasta el millón, claro si puede, Gracias | |
|
|
ebolo | |
|
Re: Números a texto en access - 2007-07-07 00:05 - Respuesta 4
Hola Henry, te dejo unas funciones que hacen lo que quieres. Estas no son mías, las baje de internet pero no me acuerdo de dónde.
'Convierte una triada en letras. Parámetros:
' vsNumeros : Triada a convertir
' vbMasculino : Indica si se debe usar el masculino o el femenino
'
Private Function fsTriada( _
ByVal vsNumeros As String, _
ByVal vbMasculino As Boolean _
) As String
On Local Error GoTo Err_fsTriada
Dim iLongitud As Integer 'Longitud de la triada pasada
Dim sUnidades As String
Dim sDecenas As String
Dim sCentenas As String
Dim sY As String 'Guarda el 'y ' para unir la unidades en caso de
'que sea necesario
If vsNumeros = "100" Then 'Se pone directamente para evitar que en la rutina
fsTriada = " cien" 'ponga 'ciento '
Exit Function
End If
'Se guarda en las variables sUnidades, sDecenas y sCentenas el numero que le
'corresponde a cada uno para hacer despues la conversion.
sUnidades = Right$(vsNumeros, 1)
iLongitud = Len(vsNumeros)
If iLongitud > 1 Then
sDecenas = Mid$(vsNumeros, iLongitud - 1, 1)
If sDecenas = "0" Then
sDecenas = ""
End If
If iLongitud > 2 Then
sCentenas = Left$(vsNumeros, 1)
If sCentenas = "0" Then
sCentenas = ""
End If
Else
sCentenas = ""
End If
Else
sDecenas = ""
End If
'
'Primero se trabaja con la parte de Centenas
'
Select Case sCentenas
Case "0"
sCentenas = ""
Case "1"
sCentenas = " ciento"
Case "2"
sCentenas = " doscient" & IIf(vbMasculino, "os", "as")
Case "3"
sCentenas = " trescient" & IIf(vbMasculino, "os", "as")
Case "4"
sCentenas = " cuatrocient" & IIf(vbMasculino, "os", "as")
Case "5"
sCentenas = " quinient" & IIf(vbMasculino, "os", "as")
Case "6"
sCentenas = " seiscient" & IIf(vbMasculino, "os", "as")
Case "7"
sCentenas = " setecient" & IIf(vbMasculino, "os", "as")
Case "8"
sCentenas = " ochocient" & IIf(vbMasculino, "os", "as")
Case "9"
sCentenas = " novecient" & IIf(vbMasculino, "os", "as")
End Select
'
'A continuacion con las decenas y las unidades. Se trabaja con los dos
'a la vez por los casos especiales (los numeros menores a 30)
'
Select Case sDecenas
Case "1"
Select Case sUnidades
Case "0"
sDecenas = " diez"
Case "1"
sDecenas = " once"
Case "2"
sDecenas = " doce"
Case "3"
sDecenas = " trece"
Case "4"
sDecenas = " catorce"
Case "5"
sDecenas = " quince"
Case "6"
sDecenas = " dieciseis"
Case "7"
sDecenas = " diecisiete"
Case "8"
sDecenas = " dieciocho"
Case "9"
sDecenas = " diecinueve"
End Select
sUnidades = ""
Case "2"
sDecenas = " veinti"
Select Case sUnidades
Case "0"
sDecenas = " veinte"
sUnidades = ""
Case "1"
sUnidades = "un" & IIf(vbMasculino, " ", "a ")
Case "2"
sUnidades = "dós"
Case "3"
sUnidades = "tres"
Case "4"
sUnidades = "cuatro"
Case "5"
sUnidades = "cinco"
Case "6"
sUnidades = "seis"
Case "7"
sUnidades = "siete"
Case "8"
sUnidades = "ocho"
Case "9"
sUnidades = "nueve"
End Select
Case Else 'Superior a 29 o inferior a 10
sY = " y"
Select Case sDecenas
Case "0", ""
sDecenas = ""
sY = ""
Case "3"
sDecenas = " treinta"
Case "4"
sDecenas = " cuarenta"
Case "5"
sDecenas = " cincuenta"
Case "6"
sDecenas = " sesenta"
Case "7"
sDecenas = " setenta"
Case "8"
sDecenas = " ochenta"
Case "9"
sDecenas = " noventa"
End Select
Select Case sUnidades
Case "0"
sUnidades = ""
Case "1"
sUnidades = sY & " un " & IIf(vbMasculino, "", "a")
Case "2"
sUnidades = sY & " dos"
Case "3"
sUnidades = sY & " tres"
Case "4"
sUnidades = sY & " cuatro"
Case "5"
sUnidades = sY & " cinco"
Case "6"
sUnidades = sY & " seis"
Case "7"
sUnidades = sY & " siete"
Case "8"
sUnidades = sY & " ocho"
Case "9"
sUnidades = sY & " nueve"
End Select
End Select
fsTriada = sCentenas & sDecenas & sUnidades
Exit Function
Err_fsTriada:
MsgBox "ERROR " & CStr(Err.Number) & " - " & Err.Des-c-r-i-p-tion
fsTriada = " "
Exit Function
End Function
'
'Realiza la conversion de Cifras a Letras. Parametros:
' vlCantidad : Cantidad a convertir
'
Public Function fsConvertirALetras( _
ByVal vlCantidad As Long _
) As String
On Local Error GoTo Err_fsConvertirALetras
Dim sCantidad As String
Dim iLongitud As Integer 'Longitud de la Cantidad pasada
Dim sCientos As String
Dim sMiles As String
Dim sMillones As String
If vlCantidad > 999999999 Then
MsgBox "La cifra ha de ser inferior a 1.000.000.000"
fsConvertirALetras = ""
Exit Function
End If
If vlCantidad = 0 Then
fsConvertirALetras = "cero"
Exit Function
End If
sCantidad = Trim$(Str$(vlCantidad))
iLongitud = Len(sCantidad)
sMillones = ""
sMiles = ""
sCientos = ""
If iLongitud > 6 Then 'Hay millones
sMillones = fsTriada(Left$(sCantidad, iLongitud - 6), True)
sMillones = sMillones & IIf(Trim$(sMillones) = "un", " millón", "millones")
sCantidad = Trim$(Right$(sCantidad, 6))
iLongitud = Len(sCantidad)
End If
If iLongitud > 3 Then 'Hay miles
sMiles = fsTriada(Left$(sCantidad, iLongitud - 3), False)
If sMiles " " Then
sMiles = IIf(Left$(Trim$(sMiles), 2) = "un ", " ", sMiles) & " mil "
End If
sCantidad = Trim$(Right$(sCantidad, 3))
iLongitud = Len(sCantidad)
End If
sCientos = fsTriada(sCantidad, False)
fsConvertirALetras = Trim$(sMillones & sMiles & sCientos)
Exit Function
Err_fsConvertirALetras:
MsgBox "ERROR " & CStr(Err.Number) & " - " & Err.Des-c-r-i-p-tion
fsConvertirALetras = " "
Exit Function
End Function
Ponlas en un módulo, y luego desde un formulario la llamas de esta forma:
Private Sub Texto0_AfterUpdate()
Me.Texto2 = fsConvertirALetras(Me.Texto0)
End Sub
esto te pone en letras en el cuadro de texto2, los números que hayas puesto en el Texto0.
La cifra ha de ser inferior a 1.000.000.000 "
Saludos.
| |
|
|
|