Trabajo con fechas

Trabajo con Access'97. Tengo creada una consulta con un campo fecha [fecha_diario].
Necesito poner un criterio en ése campo que se llamará [fecha_límite] y que el resultado sean todos los registros cuya [fecha_diario] esté entre [fecha_límite] y 3 meses atrás. Ejemplo: si [fecha_límite] es 31/07/02 los registros que deben aparecer son los que [fecha_diario] esté entre el 31/04/02 y 31/07/02. Es obligatorio que ésto lo haga en una consulta y no a través de un formulario con código, ni macros.

1 respuesta

Respuesta
1
Suponiendo que campo [fecha_diario] a comparar sea de tipo fecha, en el criterio de selección de ese campo en la consulta deberás poner lo siguiente:
>=[Fecha_Diario] Y <=AgregFecha("m";3;[Fecha_Diario])
Donde FechaDiario sera un dato de tipo fecha, o una fecha en formato texto ( de ser una fecha en formato texto debería ir entre almohadillas Ej. #10/12/02#). Cuidado con ésto ultimo, porque si el dato lo sacas de un campo de formulario o lo metes a mano seguramente se trate de un tipo texto, por lo que deberás introducirlo entre almohadillas.
Respecto a la función AgregarFecha, hace lo siguiente: AgregFecha(intervalo;numero;fecha)
Donde intervalo puede ser: "d" días
"m" Meses ó "y" años
Numero, es el numero de intervalos (días, meses o años, dependiendo el parámetro anterior) a sumar.
Y fecha, es la fecha inciail a la que sumarle el intervalo.
Creo que con esto se soluciona tu problema. Si no es así, o tienes alguna duda, no dudes en ponerte en contacto conmigo y te lo aclaro, ok ¿?
Gracias por tu ayuda. La instrucción la conocía por la ayuda de access pero no funcionaba porque está mal descrita ya que donde tú pones ";" ellos ponen ",".
Creo que no me expliqué bien. Lo que necesitaba era que la propia consulta me preguntara la [fecha_límite]. Y lo necesario era obtener todos los registros que estén "dentro" de los 3 meses anteriores a la fecha que escribo como respuesta al criterio.
Si escribo 18/02/03 que me saque los registros cuya [Fecha_diario] esté incluida en el intervalo desde el 18/11/02 al 18/02/03 (3 meses).
Por supuesto lo que me has respondido me ha servido como guía. Lo he solucionado poniendo en el "campo" [Fecha_diario] en los criterios el siguiente filtro:
>=AgregFecha("m";-3;[Fecha_Limite]) Y <=[Fecha_Limite] ---> a la pregunta de fecha_limite escribo 18/02/03
equivalente a:
>=18/11/02 y <= 18/02/03
Resto 3 meses a la [Fecha_limite] como tope inferior y por arriba que no sobrepase ésa fecha.
Hasta para mí que te lo cuento es un lío.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas