Access - CONVERTIR FECHA EN NÚMERO A FECHA EN LETRA

 
Vista:
sin imagen de perfil

CONVERTIR FECHA EN NÚMERO A FECHA EN LETRA

Publicado por MARTIN (6 intervenciones) el 28/02/2008 20:02:20
En Access 2003, tengo un campo de FECHA con formato Fecha Corta (ej.: 22/03/2008) y necesito programar un Módulo que coja ese campo y lo grabe o escriba en letra ("veintidós de Marzo de dos mil ocho"), para utilizarlo en un informe.
También agradecerís un módulo que convierta cantidades (con decimales o sin ellos) a texto (ej.: si tengo 1345, que obtenga "mil trescientos cuarenta y cinco".
El módulo de las fechas me es bastante urgente.
GRACIAS POR VUESTRA AYUDA.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CONVERTIR FECHA EN NÚMERO A FECHA EN LETRA

Publicado por mi menda (1111 intervenciones) el 29/02/2008 07:50:07
Hola Martín:
Puedes utulizar esto. el códdigo comprende del año 2000 al 2099, que creo que bastará:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub cmdConvertirFecha_Click()
 
Dim intDia As Integer, intMes As Integer, intAño As Integer, _
    strDia As String, strMes As String, strAño As String
 
    intDia = Left(Me.CampoFecha, 2)
    intMes = Mid(Me.CampoFecha, 4, 2)
    intAño = Right(Me.CampoFecha, 2) ' hasta el 2099
 
    strDia = dimeDia(intDia)
    strMes = dimeMes(intMes)
    strAño = dimeAño(intAño)
    CampoFechaLetra = strDia & " de " & strMes & " del " & strAño
 
End Sub

Las siguientes funciones las puedes poner en un módulo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Function dimeDia(dameDia As Integer) As String
 
Select Case dameDia
    Case 1
        dimeDia = "uno"
    Case 2
        dimeDia = "dos"
    Case 3
        dimeDia = "tres"
    Case 4
        dimeDia = "cuatro"
    Case 5
        dimeDia = "cinco"
    Case 6
        dimeDia = "seis"
    Case 7
        dimeDia = "siete"
    Case 8
        dimeDia = "ocho"
    Case 9
        dimeDia = "nueve"
    Case 10
        dimeDia = "diez"
    'Case sigue tu hasta el dia 31
 
End Select
 
End Function
 
Function dimeMes(dameMes As Integer) As String
 
Select Case dameMes
    Case 1
        dimeMes = "enero"
    Case 2
        dimeMes = "febrero"
    Case 3
        dimeMes = "marzo"
    Case 4
        dimeMes = "abril"
    Case 5
        dimeMes = "mayo"
    Case 6
        dimeMes = "junio"
    Case 7
        dimeMes = "junio"
    Case 8
        dimeMes = "agosto"
    Case 9
        dimeMes = "septiembre"
    Case 10
        dimeMes = "octubre"
    Case 11
        dimeMes = "noviembre"
    Case 12
        dimeMes = "diciembre"
 
End Select
End Function
 
Function dimeAño(dameAño As Integer) As String
 
Select Case dameAño
    Case Is < 10
        If dameAño = 0 Then
                dimeAño = "dos mil"
         Else
                dimeAño = "dos mil " & dimeDia(dameAño)
         End If
    Case 10
        dimeAño = "dos mil diez"
    Case 11
        dimeAño = "dos mil once"
    Case 12
        dimeAño = "dos mil doce"
    Case 13
        dimeAño = "dos mil trece"
    Case 14
        dimeAño = "dos mil catorce"
    Case 15
        dimeAño = "dos mil quince"
    Case 16 To 19
       dimeAño = "dos mil dieci" & dimeDia(Right(dameAño, 1))
    Case 20
        dimeAño = "dos mil veinte"
    Case 21 To 29
        dimeAño = "dos mil veinti" & dimeDia(Right(dameAño, 1))
    Case 30
        dimeAño = "dos mil treinta"
    Case 31 To 39
        dimeAño = "dos mil treinta y " & dimeDia(Right(dameAño, 1))
    Case 40
       dimeAño = "dos mil cuarenta"
    Case 41 To 49
        dimeAño = "dos mil cuarenta y " & dimeDia(Right(dameAño, 1))
    Case 50
        dimeAño = "dos mil cincuenta"
    Case 51 To 59
        dimeAño = "dos mil cincuenta y " & dimeDia(Right(dameAño, 1))
    Case 60
        dimeAño = "dos mil esenta"
    Case 61 To 69
        dimeAño = "dos mil sesenta y" & dimeDia(Right(dameAño, 1))
    Case 70
        dimeAño = "dos mil setenta"
    Case 71 To 79
        dimeAño = "dos mil setenta y " & dimeDia(Right(dameAño, 1))
    Case 80
        dimeAño = "dos mil ochenta"
    Case 81 To 89
        dimeAño = "dos mil ochenta y " & dimeDia(Right(dameAño, 1))
    Case 90
        dimeAño = "dos mil noventa"
    Case 91 To 99
        dimeAño = "dos mil noventa y " & dimeDia(Right(dameAño, 1))
    End Select
End Function

En cuanto lo de pasar cantidades a letras, en la sección código fuente de esta misma página tienes un ejemplo.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:CONVERTIR FECHA EN NÚMERO A FECHA EN LETRA

Publicado por mi menda (1111 intervenciones) el 29/02/2008 11:58:23
Hola de nuevo Martín:
Me he acordado de que ya existe una función para el nombre del mes, así que te puedes ahorrar la función dimeMes y la variable intMes, a no ser que quiereas poner el nombre del més de una forma distinta a como te lo devuelve la función de VBA.

strMes = strMes = MonthName(Month(CampoFecha))

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CONVERTIR FECHA EN NÚMERO A FECHA EN LETRA

Publicado por MI MENDA (1111 intervenciones) el 07/03/2008 09:02:27
ESTO FUNCIONA. MUCHISIMAS GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

agregando de 1900 a 1999

Publicado por Azra (1 intervención) el 29/10/2014 18:59:56
gracias me ha sido de utilidad, lo use para fechas de nacimiento por lo que agrege 19...

quedo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub FechaNacimiento_LostFocus()
Dim intDia As Integer, intMes As Integer, intAño As Integer, intAño19 As Integer, _
strDia As String, strMes As String, strAño As String
 
intDia = Left(Me.FechaNacimiento, 2)
intMes = Mid(Me.FechaNacimiento, 4, 2)
 
     intAño = Right(Me.FechaNacimiento, 2) ' hasta el 2099
     intAño19 = Right(Me.FechaNacimiento, 4) ' hasta 1999
 
strDia = dimeDia(intDia)
strMes = dimeMes(intMes)
 
'selección de la function en base al año
 
If intAño19 < 2000 Then
       strAño = dimeAño19(intAño)
       Me!CampoFechaLetra = strDia & " DE " & strMes & " DE " & strAño
Else
       strAño = dimeAño(intAño)
       Me!CampoFechaLetra = strDia & " DE " & strMes & " DEL " & strAño
End If
 
End Sub

y agrege una function, modificando un poco la function "dimeAño" quedando asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Public Function dimeAño19(dameAño As Integer) As String
 
Select Case dameAño
Case Is < 10
If dameAño = 0 Then
dimeAño19 = "MIL NOVECIENTOS"
Else
dimeAño19 = "MIL NOVECIENTOS" & dimeDia(dameAño)
End If
Case 10
dimeAño19 = "MIL NOVECIENTOS DIEZ"
Case 11
dimeAño19 = "MIL NOVECIENTOS ONCE"
Case 12
dimeAño19 = "MIL NOVECIENTOS DOCE"
Case 13
dimeAño19 = "MIL NOVECIENTOS TRECE"
Case 14
dimeAño19 = "MIL NOVECIENTOS CATORCE"
Case 15
dimeAño19 = "MIL NOVECIENTOS QUINCE"
Case 16 To 19
dimeAño19 = "MIL NOVECIENTOS DIECI" & dimeDia(Right(dameAño, 1))
Case 20
dimeAño19 = "MIL NOVECIENTOS VEINTE"
Case 21 To 29
dimeAño19 = "MIL NOVECIENTOS VEINTI" & dimeDia(Right(dameAño, 1))
Case 30
dimeAño19 = "MIL NOVECIENTOS TREINTA"
Case 31 To 39
dimeAño19 = "MIL NOVECIENTOS TREINTA Y " & dimeDia(Right(dameAño, 1))
Case 40
dimeAño19 = "MIL NOVECIENTOS CUARENTA"
Case 41 To 49
dimeAño19 = "DOS NOVECIENTOS MIL CUARENTA Y " & dimeDia(Right(dameAño, 1))
Case 50
dimeAño19 = "MIL NOVECIENTOS CINCUENTA"
Case 51 To 59
dimeAño19 = "MIL NOVECIENTOS CINCUENTA Y " & dimeDia(Right(dameAño, 1))
Case 60
dimeAño19 = "MIL NOVECIENTOS SESENTA"
Case 61 To 69
dimeAño19 = "MIL NOVECIENTOS SESENTA Y" & dimeDia(Right(dameAño, 1))
Case 70
dimeAño19 = "MIL NOVECIENTOS SETENTA"
Case 71 To 79
dimeAño19 = "MIL NOVECIENTOS SETENTA Y " & dimeDia(Right(dameAño, 1))
Case 80
dimeAño19 = "MIL NOVECIENTOS OCHENTA"
Case 81 To 89
dimeAño19 = "MIL NOVECIENTOS OCHENTA Y " & dimeDia(Right(dameAño, 1))
Case 90
dimeAño19 = "MIL NOVECIENTOS NOVENTA"
Case 91 To 99
dimeAño19 = "MIL NOVECIENTOS NOVENTA Y " & dimeDia(Right(dameAño, 1))
End Select
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

agregando de 1900 a 1999

Publicado por joaquin guerrero (4 intervenciones) el 23/10/2019 01:01:27
exelente, al llegar con: Case 91 To 99
dimeAño = "un mil novecientos y " & dimeDia(Right(dameAño, 1))

como hago para seguir con el 2000 a 2099

muchas gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar