Fechas vencidas de registros ingresados previamente

Espero me puedan ayudar

Tengo un informe basado en una base de datos que tiene registros de más de 4 años los registros algunos ya tienen más de un año y otros están solo comprendidos entre meses o días bueno estuve mirando por internet y encontré esto de formato condicional que me serviría mucho para poder saber los registros que ya llevan más de un año y sacarlos de mi inventario el problema que tengo es que no se que expresión debo usar para que access ponga color a los registros que llevan más de un año la idea es que los registros desde la fecha que se ingresaron un año después el informe les ponga color porque ya se venció la estadía en el inventario y así sea más fácil saber cuales son y sacarlos espero me puedan ayudar.

2 respuestas

Respuesta
1

No se cual es el código que has sacado de internet, pero en vista diseño del informe haz clic en, por ejemplo, cuadro de texto FechaExpte, y en la barra de menus pulsa Formato y Formato condicional. En la ventana que se abra selecciona nueva regla y elige El valor del campo es menor que y en la parte de la derecha pon

Date()-365

Y debajo elige, si quieres un color de fondo un color de letra, etc.

Pulsa aplicar -Aceptar y listo.

Cuando el campo Fecha cumpla la condición de tener mas de un año a contar desde el día de hoy, te los pondrá con fondo rojo, letra roja, etc., lo que hayas elegido.

Pero..., yo lo que haría, si me permites un consejo, sería poner un botón en un formulario y en sus propiedades-eventos-al hacer clic pondría

docmd.runsql"delete * from inventario where fechaexpte<date()-365"

Así, cuando pulses el botón te eliminará aquellos registro de la tabla Inventario cuya fecha de expediente sea más antigua de un año.

Gracias amigo me funcionó perfecto me llama la atención lo del botón la cuestión es que tengo que tener constancia de los recibos eliminados sabes si con el mismo botón antes de eliminarlos los envíe no se a un informe para así tener una base de datos de eso 

Yo no los eliminaría. Las bases de datos sirven para eso, guardar datos, que nunca se saben si se pueden necesitar.

Te digo lo que haría, que no tiene porque servirte a ti. Crearía una tabla Historial, con los campos que creas oportuno y supongamos que el formulario con el que trabajas se llama Clientes. En el evento Al abrir del formulario pondría

docmd.setwarnings false

docmd.runsql"insert into Historial select * from Clientes where fechaexpte<date()-365

docmd.runsql"delete * from clientes where fechaexpte<date()-365

Así, cuando abrieras el formulario, sin tener que hacer nada, que es de lo que se trata, te coge aquellos registros con fechaexp de mas de un año y te los inserta en Historial y luego te borra esos registros de la tabla Clientes.

En la primera instrucción de insertar he supuesto que las tablas tienen los mismos campo, en caso de que solo tuviera algunos sería

docmd.runsql"insert into historial select cliente, dirección, teléfono, etc, from clientes where...

Respuesta
1

Concuerdo con la respuesta de Icue González,

Solo que un método que considero personalmente más fácil seria crear una tabla historial y una consulta de actualización poniendo en criterios la expresión para que filtre la fecha, posterior a eso realizaría una nueva consulta de eliminación con el mismo criterio y añadiría un formulario de depuración para eliminar mediante un botón de comando en el evento al hacer click una macro que abra ambas consultas primero la de actualizar datos y después la de eliminar. Tal vez te funcione mejor la opción de código pero ahí tienes otra opción que revisar, recomiendo hacer la prueba antes en un respaldo para evitar errores.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas