Cálculo de fechas en una tabla

Mi base de datos es para controlar que se hagan todas las revisiones que tocan. Tengo una tabla con la última fecha en que se realizó cada revisión y la periodicidad (meses entre revisiones) en que esta revisión se tiene que hacer.

En un formulario y un informe ya he calculado la fecha que se tiene que realizar la siguiente revisión, pero no me sirve. Me gustaría obtener un informe únicamente con las revisiones que se tienen que hacer durante el mes en que nos encontramos a partir de la tabla que he mencionado al principio, pero para eso se tiene que calcular la fecha de la siguiente revisión.

No se cómo hacer una columna en la tabla calculando la siguiente fecha a partir de la última revisión y de la periodicidad. Para calcularlo en el informe o formulario he utilizado: AgregFecha(“m”; [meses entre revisiones];[Fecha última revisión]).

2 respuestas

Respuesta
2

Supongamos que tienes una tabla con, entre otros, un campo Fecha Matriculación. Si ya tienes hecho el informe, con la fecha de matriculación, en un formulario puedes poner, por ejemplo, un botón y ponerle como texto Este mes. Otro botón con texto En un mes, etc

En las propiedades-eventos-Al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe

docmd.openreport"nombre del infome",acpreview,,"month([fecha matriculación])=month(date())"

Es decir, abre el informe con aquellos registros en que el mes de matriculación sea igual al mes actual.

En el caso del botón En un Mes

docmd.openreport"nombre del informe",acpreview,,"month([fecha matriculación])=month(date())+1

Y así sucesivamente

También puedes hacerlo con un combinado. En sus propiedades-otras-nombre ponle Elegir. En sus propiedades-Datos-Tipo origen de la fila ponle Lista de Valores, y en Orgen de la fila ponle, por ejemplo

"Este mes";"En un mes";"En dos meses";"En tres meses"

Y en sus propiedades-eventos-después de actualizar, crea un procedimiento de evento y pon

select case elegir

case is="Este mes"

docmd.openreport"nombre del infome",acpreview,,"month([fecha matriculación])=month(date())"

Case is="En un mes"

docmd.openreport"nombre del infome",acpreview,,"month([fecha matriculación])=month(date())+1"

Case is="En dos meses"

docmd.openreport"nombre del infome",acpreview,,"month([fecha matriculación])=month(date())+2"

Case is="En tres meses"

docmd.openreport"nombre del infome",acpreview,,"month([fecha matriculación])=month(date())+3"

end select

Respuesta
1

Manuela,

Como pasa casi siempre puedes resolver el problema de varias maneras:

Una de ellas sería hacer una consulta que te devuelva los datos que necesitas y esa consulta sería el origen de datos de tu informe. Podría ser algo parecido a esto:

Otra posibilidad sería añadir a la tabla un campo que actualices al mismo tiempo que creas cada registro con la fecha de la próxima revisión.

Otra posibilidad sería hacer un campo en la tabla de tipo calculado, en ese caso lo podrías configurar para que te devolviera el número de mes de la siguiente revisión:

Gracias, ha sido de gran ayuda!

Me sale un problema en la consulta al introducir el criterio: Mes(Fecha()). Dice que no coinciden los tipos de datos en la expresión de criterios. 

¿A qué se debe? 

Se debe a un problema con los tipos de datos... asegurate que en tu tabla, el campo que para mí es "meses" es de tipo numérico y que el campo "Fecha ultima" es de fecha.. Por lo demás debería funcionar. Si no te funciona y me quieres pasar el archivo (si quieres sin datos, solamente las tablas) por mail, lo puedo revisar.

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas