Access - CONVERTIR FECHAS A LETRAS .-

 
Vista:

CONVERTIR FECHAS A LETRAS .-

Publicado por Manuel (8 intervenciones) el 27/02/2002 16:39:31
Hola! Necesito ayuda para sacar en los informes las fechas en letras, es decir por ejemplo 27/02/02 como "veintisiete de febrero de dos mil dos" . ¿Sabe alguien cómo hacer esto?. Gracias.
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 FECHAS A LETRAS .-

Publicado por PEFI (66 intervenciones) el 27/02/2002 19:21:17
Manuel.

En primer lugar en vez de tener una función que convierte fecha a número necesita una función que convierta numero a palabras, pero te propongo una solución casera.

Porque no crea un tabla o matriz que contenga los datos de la fecha, es decir, tu sabe que el dia del mes llega hasta 31 entonces escribe el texto hast 31; y el mes hasta 12 escribe el texto hasta diciembre y el año tu veraz hasta cuando le puede agregar el texto del año, una vez teniendo, esto `puede formar la fecha haciendo las consulta a l atabla o matriz DIA, MES, AÑO. para formar la fecha.

Si tiene duda o desea la otra F(x), enviame Email.

Atte. PEFI
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 FECHAS A LETRAS .-

Publicado por Farid (1 intervención) el 24/11/2008 20:38:30
Este es un aporte de un miembro del grupo que lo convertí directamente en función de transformar en cualquier reporte o formulario un campo dado con una fecha al texto de esa fecha, el merito es de (mi menda laurecharro<@>mixmail<.>com), lo que aporto es que todo sea una función en un modulo

Public Function FechaTexto(fchCert As Date) As String

Dim intDia As Integer
Dim intMes As Integer
Dim intAño As Integer

Dim strDia As String
Dim strMes As String
Dim strAño As String

intDia = Left(fchCert, 2)
intMes = Mid(fchCert, 4, 2)
intAño = Right(fchCert, 2) ' hasta el 2099

strDia = dimeDia(intDia)
strMes = dimeMes(intMes)
strAño = dimeAño(intAño)
If intDia = 1 Then
FechaTexto = "el " & strDia & " día del mes de " & strMes & " del " & strAño & "."
Else
FechaTexto = " a los " & strDia & " días del mes de " & strMes & " del " & strAño & "."
End If

End Function

'*********************************************
' Día a texto
'*********************************************
Function dimeDia(dameDia As Integer) As String

Select Case dameDia
Case 1
dimeDia = "primer"
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 11
dimeDia = "once"
Case 12
dimeDia = "doce"
Case 13
dimeDia = "trece"
Case 14
dimeDia = "catorce"
Case 15
dimeDia = "quince"
Case 16
dimeDia = "dieciseis"
Case 17
dimeDia = "diecisiete"
Case 18
dimeDia = "dieciocho"
Case 19
dimeDia = "diecinueve"
Case 20
dimeDia = "veinte"
Case 21
dimeDia = "veintiuno"
Case 22
dimeDia = "veintidos"
Case 23
dimeDia = "veintitres"
Case 24
dimeDia = "veinticuatro"
Case 25
dimeDia = "veinticinco"
Case 26
dimeDia = "veintiseis"
Case 27
dimeDia = "veintisiete"
Case 28
dimeDia = "veintiocho"
Case 29
dimeDia = "veintinueve"
Case 30
dimeDia = "treinta"
Case 31
dimeDia = "treintiuno"
End Select
End Function

'*********************************************
' Mes a texto
'*********************************************
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

'*********************************************
' Año a texto
'*********************************************
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
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
sin imagen de perfil
Val: 2
Ha disminuido su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

RE:CONVERTIR FECHAS A LETRAS .-

Publicado por joaquin guerrero (4 intervenciones) el 12/09/2019 06:29:32
esta genial, solo tengo un problema la fecha con el dia 1/10/2019, no la toma me da error solo los dias que empiezan con 2 digitos, tienen alguna solucion que me hagan el favor de enviarme

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim intDia As Integer
Dim intMes As Integer
Dim intAño As Integer
 
Dim strDia As String
Dim strMes As String
Dim strAño As String
 
intDia = Left(fchCert, 2)-----------------------de este no pasa---------------
intMes = Mid(fchCert, 4, 2)
intAño = Right(fchCert, 2) ' hasta el 2099
 
strDia = dimeDia(intDia)
strMes = dimeMes(intMes)
strAño = dimeAño(intAño)
If intDia = 1 Then
FechaTexto = "el " & strDia & " día del mes de " & strMes & " del " & strAño & "."
Else
FechaTexto = " a los " & strDia & " días del mes de " & strMes & " del " & strAño & "."
End If
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 FECHAS A LETRAS .-

Publicado por Anonimo (3312 intervenciones) el 12/09/2019 08:47:15
Se parte de un dato de fecha (fecha en formato de Access ==> Public Function FechaTexto(fchCert As Date) As String
Por lo que esta parte (original)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim intDia As Integer
Dim intMes As Integer
Dim intAño As Integer
 
Dim strDia As String
Dim strMes As String
Dim strAño As String
 
intDia = Left(fchCert, 2)
intMes = Mid(fchCert, 4, 2)
intAño = Right(fchCert, 2) ' hasta el 2099 
 
strDia = dimeDia(intDia)
strMes = dimeMes(intMes)
strAño = dimeAño(intAño)

Se puede modificar asi:
1
2
3
4
5
6
7
8
9
Dim strDia As String
Dim strMes As String
Dim strAño As String
 
 ' hasta el 2099 
 
strDia = dimeDia(Day(fchCert))
strMes = dimeMes(Month(fchCert))
strAño = dimeAño(Format(fchCert,"yy"))

Las funciones Dia y mes -Day(), Month()- devuelven un valor numérico aunque tambien se puede utilizar Format pero es mas onerosa en recursos (algo similar a utilizar un micro-bus de diez plazas para un solo pasajero)

Se utiliza la función Format con el año, porque un año -a momento actual- tiene cuatro cifras y se requieren solo dos para la conversión del año, no existe problema con que la función Format devuelva un texto, la llamada a la función -dimeAño- revierte el texto en valor numérico:
Function dimeAño(dameAño As Integer) As String

Esta limitada la función en su conjunto para ser fiel solo en este siglo (es solo a titulo de referencia, si se utiliza con datos históricos puede haber problemas de temporalidad).

Hay una alternativa sencilla al código original:
Aplicar la función VAL, pero sospecho que la evaluación de una fecha Access (un numero) como si fuese un texto dará problemas no solo con el día sino con el mes (que en su mayor parte también tienen una cifra) y con el año que suele representarse con cuatro.

¿Tendrían sentido las funciones Day(), Month() y Year() si las fechas fueran texto y se guardaran como texto? …
¿Se podrían sumar días. meses, años a una representación -en texto- de una fecha: 01/05/2025 <> 1/5/2025 <> 1/5/25 ? ….

Original:
intDia = Left(fchCert, 2)
intMes = Mid(fchCert, 4, 2)

Modificada:
intDia = Val(Left(fchCert, 2) )
intMes = Val(Mid(fchCert, 4, 2) )


Pero si se desperdician menos recursos (variables innecesarias en principio) la maquina hará el mismo trabajo en menos tiempo (mas eficiencia)

Si aun así no cumple las premisas (solo he aplicado el análisis, sin verificar ni la original ni la modificación propuesta) comenta el problema para aplicar alternativas.
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 FECHAS A LETRAS .-

Publicado por Anonimo (3312 intervenciones) el 12/09/2019 09:38:03
Una simplificación para obtener el día del mes en letra:
1
strDia = Choose(Day(fchCert),"primer","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","quince","dieciseis","diecisiete","dieciocho","diecinueve","veinte","veintiuno","veintidos","veintitres","veinticuatro","veinticinco","veintiseis","veintisiete","veintiocho","veintinueve","treinta","treinta y uno")

Se puede aplicar para mes, año y allá donde la imaginación lo requiera
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 FECHAS A LETRAS .-

Publicado por joaquin guerrero (4 intervenciones) el 03/10/2019 01:49:15
Buenas noches, este codigo es lo maximo, solo tengo una consulta, como puedo hacer para corregir en el mes que me salgan en letras los meses10 = octubre, 11=noviembre, y 12=diciembre, se los voy agradecer muchisimo

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
Public Function FechaTexto(fchCert As Date) As String
 
Dim intDia As Integer
Dim intMes As Integer
Dim intAño As Integer
 
Dim strDia As String
Dim strMes As String
Dim strAño As String
 
intDia = Val(Left(fchCert, 2))
intMes = Val(Mid(fchCert, 4, 2))
intAño = Right(fchCert, 2) ' hasta el 2099
 
strDia = dimeDia(intDia)
strMes = dimeMes(intMes)
strAño = dimeAño(intAño)
If intDia = 1 Then
FechaTexto = "el " & strDia & " día del mes de " & strMes & " del " & strAño & "."
Else
FechaTexto = " a los " & strDia & " días del mes de " & strMes & " del " & strAño & "."
End If
 
End Function
 
'*********************************************
' Día a texto
'*********************************************
Function dimeDia(dameDia As Integer) As String
 
Select Case dameDia
Case 1
dimeDia = "primer"
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 11
dimeDia = "once"
Case 12
dimeDia = "doce"
Case 13
dimeDia = "trece"
Case 14
dimeDia = "catorce"
Case 15
dimeDia = "quince"
Case 16
dimeDia = "dieciseis"
Case 17
dimeDia = "diecisiete"
Case 18
dimeDia = "dieciocho"
Case 19
dimeDia = "diecinueve"
Case 20
dimeDia = "veinte"
Case 21
dimeDia = "veintiuno"
Case 22
dimeDia = "veintidos"
Case 23
dimeDia = "veintitres"
Case 24
dimeDia = "veinticuatro"
Case 25
dimeDia = "veinticinco"
Case 26
dimeDia = "veintiseis"
Case 27
dimeDia = "veintisiete"
Case 28
dimeDia = "veintiocho"
Case 29
dimeDia = "veintinueve"
Case 30
dimeDia = "treinta"
Case 31
dimeDia = "treintiuno"
End Select
End Function
 
'*********************************************
' Mes a texto
'*********************************************
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
 
'*********************************************
' Año a texto
'*********************************************
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 sesenta"
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
Sub octubre()
 
End Sub
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