Access - Fecha con días, meses y años - Access 2003

   
Vista:

Fecha con días, meses y años - Access 2003

Publicado por ute (3 intervenciones) el 01/10/2013 17:46:01
Hola, me gustaría saber si hay alguna forma en una consulta de Access 2003 de mostrar un campo calculado donde se indique la cantidad de tiempo pasado entre una fecha y otra, pero que se muestre no solo en un intervalo de tiempo sino en varios, por ejemplo días, meses y años. Si es posible únicamente utilizando las funciones de Access y no VBA ni SQL.

Ej: A partir de partir de una campo que tiene fechas de nacimiento que me muestre a día de hoy algo asi: 20 años, 7 meses y 3 días.

Gracias,
Un saludo!!!
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

Fecha con días, meses y años - Access 2003

Publicado por 2PL (461 intervenciones) el 02/10/2013 12:14:56
Mirate la funcion DateDiff
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

Fecha con días, meses y años - Access 2003

Publicado por ute (1 intervención) el 02/10/2013 12:27:00
Si, con esa función puedo mostrar los años, meses y días pero por separado. Me quedaría algo asi:
1 año, 12 meses, 365 días.

Yo intento quedarme con el pico de los meses y días y que me calcule exactamente cuantos son, no el total del año para mostrar algo como puse en el primer mensaje:
1 año, 7 meses y 12 días.

Con el DateDiff puedo calcular años dividiendo entre 12 y los meses con el operador MOD, pero y los días....¿?

un saludo y 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

Fecha con días, meses y años - Access 2003

Publicado por Jesús Manuel (134 intervenciones) el 02/10/2013 14:39:37
Hace algún tiempo tuve tu misma necesidad, ya que en excel si podía hacerlo, pero me encontré que el gran problema era calcular los días.

Al final adapte una función a mis necesidades y la guarde en un módulo para poder usarla en consultas.


Tendrías que ir a CREAR -> MÓDULO y pegar este código:


Function AñoMesDia(ByVal Fecha1 As Date, ByVal Fecha2 As Date) As String
Dim iAño As Integer, iMes As Integer, iDia As Integer
Dim dAñoAddedDate As Date, dMesAddedDate As Date, Fecha3 as Date
If isnull Fecha1 or Fecha2 exit function

'Fecha1 tiene que ser menor que Fecha2, para no tener valores negativos
If Fecha1>Fecha2 then
Fecha3=Fecha1
Fecha1=Fecha2
Fecha2=Fecha3
End if
iAño = DateDiff("yyyy", Fecha1, Fecha2)
dAñoAddedDate = DateAdd("yyyy", iAño, Fecha1)
If dAñoAddedDate > Fecha2 Then
'Menos de un año de diferencia, por lo que restamos 1
iAño = iAño - 1
dAñoAddedDate = DateAdd("yyyy", iAño, Fecha1)
End If

iMes = DateDiff("m", dAñoAddedDate, Fecha2)
dMesAddedDate = DateAdd("m", iMes, dAñoAddedDate)
If dMesAddedDate > Fecha2 Then
'Menos de un mes de diferencia, por lo que restamos 1
iMes = iMes - 1
dMesAddedDate = DateAdd("m", iMes, dAñoAddedDate)
End If

iDia = DateDiff("d", dMesAddedDate, Fecha2)

AñoMesDia = iAño & IIf(iAño = 1, " año, ", " años, ") & iMes & IIf(iMes = 1, " mes y ", " meses y ") & iDia & IIf(iDia = 1, " día", " días")

End Function






Guarda el módulo con el nombre AñoMesDia y vete a crear consulta. En la celda CAMPO adaptas este código a la nomenclatura de tu base de datos:

Diferencia: AñoMesDia([campo_con_la_fecha_nacimiento];Ahora())



Y si lo quieres usar en un formulario, insertas un cuadro de texto y en ORIGEN DE CONTROL:

=AñoMesDia([campo_con_la_fecha_nacimiento];Ahora())
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

Fecha con días, meses y años - Access 2003

Publicado por 2pl (461 intervenciones) el 02/10/2013 16:19:14
Elije la que más te guste

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function parendat(FECHA1 As Date, FECHA2 As Date)
Dim años As Integer
Dim MESES As Integer
Dim DIAS As Integer
 
años = DateDiff("yyyy", FECHA1, FECHA2)
 
If Format(FECHA2, "mmdd") < Format(FECHA1, "mmdd") Then
  años = años - 1
End If
 
MESES = DateDiff("m", FECHA1, FECHA2) - (años * 12)
 
DIAS = DateDiff("d", Format(FECHA1, "dd"), Format(FECHA2, "dd"))
 
If DIAS < 0 Then
    MESES = MESES - 1
    DIAS = DateDiff("d", DateSerial(Year(FECHA2), Month(FECHA2) - 1, Day(FECHA1)), FECHA2)
End If
 
parendat = Str(años) & " años," & Str(MESES) & " meses," & Str(DIAS) & " días"
 
 
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

Fecha con días, meses y años - Access 2003

Publicado por WILLIAN WILLIANHF3@GMAIL.COM (2 intervenciones) el 05/10/2015 19:08:48
PRIMERAMENTE ENVIAR MIS SALUDOS PERSONALES Y AGRADECER MUCHÍSIMO Y DIOS LE BENDIGA POR ESTE CÓDIGO QUE CALCULA Fecha con días, meses y años - Access.

¿COMO PUEDO AGREGAR A ESTE CÓDIGO LO SIGUIENTE:?

1. TENGO 2 CAMPO TIPO FECHAS: LICENCIA1 Y LICENCIA2 RESTANDO ESTOS DOS CAMPO OBTENGO UN VALOR.
2. EL VALOR OBTENIDO NECESITO RESTARLE A LOS AÑO MESES Y DÍAS.

DISCULPE LA MOLESTIA, AGRADECERÉ ANTICIPADAMENTE SU ACERTADA RESPUESTA Y NUEVAMENTE QUE DIOS LE BENDIGA A USTED A SU SABIDURÍA Y FAMILIA Y ÉXITOS EN SU PROFESIÓN.
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

Fecha con días, meses y años - Access 2003

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/10/2015 11:09:51
Por favor en mayúsculas (letras capitales) todo el texto ===> NOOOO en internet implica GRITAR y no esta bien visto, si hay problemas de visión, basta aumentar el tipo de letra, cambiara aun monitor de mayor tamaño o reducir en el que se utiliza la resolución (así se vera menos información pero a un tamaño 'mas legible').

La diferencia entre fechas devuelve un numero, numero que representa a la cantidad de días que los separa (pero ese numero no es una fecha)
Si a una fecha (cualquiera) le sumamos/restamos un numero, le estamos sumando/restando días, pero no deja de ser una fecha.

No veo que necesidad hay de restar días/meses/años por separado si el conjunto de días + meses + años = un numero de días mayor (y mucho mas real, dado que tiene en cuenta los bisiestos, algo que restando por separado no se tiene en cuenta).

En definitiva ... utilizar por separado esos datos es una absoluta perdida de tiempo, solo justificable en casos concretos y sin tratamiento posterior (por lo indicado antes respecto a los años bisiestos).
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

Fecha con días, meses y años - Access 2003

Publicado por ute (3 intervenciones) el 04/10/2013 18:00:07
Hola. Gracias a los dos por la ayuda.

Entra en VBA, inserto un módulo y pego el código que me habéis puesto. Lo guardo con el nombre de la función y hasta ahí todo bien. Pero cuando voy a la consulta y creo un nuevo campo asi:

Diferencia: AñoMesDia([Fecha Nacimiento];Fecha())

Me salta error: La función 'AñoMesDia' no está definida en la expresión. Alguna idea? con 'parendat' me ocurre lo mismo.

Muchas 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

Fecha con días, meses y años - Access 2003

Publicado por Jesús Manuel (134 intervenciones) el 07/10/2013 08:44:43
En la consulta en lugar de pegar el código, pulsa el botón Generador de Expresiones, Elementos de expresión, Funciones, Funciones para tu base de datos. Tienes la función AñoMesDias ahí?
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

Fecha con días, meses y años - Access 2003

Publicado por ute (3 intervenciones) el 07/10/2013 10:18:30
Si, ahí está. La creo des ahí, pero a la hora de ejecutar sigue apareciendo el mensaje:

La función 'AñoMesDia' no está definida en la expresión.
Hay que activar algún botón, como el de totales o algo por el estilo?

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