Numerar informes y generar tarea pendiente

Me gustaría pediros consejo y que indiquéis cual sería la mejor manera de hacer lo siguiente:
En una base de datos que gestiona el alta de activos tengo diseñados varios informes. Uno de ellos lanza las altas que se han realizado en el día, agrupadas por dos criterios. Me gustaría diseñar un procedimiento en el que automáticamente, si se han producido altas se genere el informe del día de la fecha, lo numere secuencialmente y, si el usuario no lo lanza antes de cerrar la aplicación, que le recuerde al abrir access que tiene pendiente lanzar el informe de "altas provisionales".
¿Me podéis dar una pista de por dónde empezar a hacer eso?

1 respuesta

Respuesta
1

Lo puedes hacer de muchas formas, todo depende de como tengas construida la base.

Voy a suponer cosas:

Supongamos que tienes una tabla Activos con Idactivo, Activo, fecha, yo que se, etc. Añádele un campo Enviado(Sí/No)

Supongamos que en la base tienes un formulario de inicio, que es el que aparece al abrirla,.

En el evento Al cargar o en el evento Al abrir puedes poner

If dcount("activo","activos","fecha=date() and enviado=0")>=1 then

dim respuesta as integer

Respuesta=msgbox("Nenico, tienes informes por enviar.¿Los quieres mandar ahora?", vbyesno+ vbcritical"Que conste que te avisé, luego no digas")

if respuesta=vbyes then

docmd.openreport"nombre del informe",acpreview,,"fecha=date() and enviado=0"

elseif respuesta=vbno then

lo que quieres que hagas al decirle que no

end if 

end if

Como te decía, al no saber como la tienes construida, en algún evento, por ejemplo de un botón cerrar, pones el mismo código o algo asi como

...

if respuesta =vbyes then

Docmd. Cancelevent

Para que en el informe te ponga siempre un número correlativo

Supongamos que te aparecen los campos Activo, fecha, yoquesé,...

A la derecha de yoquesé añádele un cuadro de texto independiente y en sus propiedades-datos-origen de control le pones

=1

Y en suma continua elige sobre todo

Así, independientemente de que muestre 10 registros como 200 te los numerará correlativamente.

Y por último, una vez que hayas hecho con el informe lo que tengas que hacer, en el mismo evento en que le has dicho algo puedes añadirle

docmd.setwarnings false

docmd.runsql"update Activos set enviado=-1 where enviado=0 and fecha=Date()"

Es decir, que una vez que se haya hecho lo que sea con el informe, que te marque como Si enviados aquellos registros de la tabla Activos en que Enviado no esté marcado(no) y que sean frescos(los del día del sistema).

Por cierto, no haría falta formulario de inicio, se puede hacer con la macro Autoexec, pero como las odio ni las menciono.

A ver,  no se si te he entendido bien.  tengo un formulario de inicio con código de usuario y contraseña. Y salvo que sea el administrador quien entra, ese formulario te envía a otro llamado formulario principal en el que se organizan las distintas tareas,  dar altas,  dar bajas,  modificar información,  imprimir informes,  etc. En ese formulario principal quiero que se llame el mensaje de que existen informes por lanzar. Pero el lanzamiento de ese informe necesita que le indiques la fecha de alta y el mensaje debería discriminar eso,  si esa fecha no tiene lanzado el informe que agrupa todos los activos datos de alta en el día 

Creo que lo mejor es que si quieres, repito, si quieres me mandes un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo.

Si lo haces, en el asunto del mensaje pon tu alias Tivinasan ya que si no sé quien me escribe ni los abro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas