Actualizar bd a cierta hora access

Tengo una base en red, vinculada a otra base en el escritorio en mi pc, normalmente la actualizo todos días con dos botones que tengo en un formulario, todo esto para guardar una copia original en mi equipo .
Pero estos días salgo a vacaciones y quiero que los comandos se ejecuten a cierta hora todos los días ¿cómo podría hacerlo?

1 Respuesta

Respuesta
1
Croe que tienes dos posibilidades. Una es crear una tarea programada en el sistema (en windows) y abrir la base de datos pasando un parámetro. Esto te obliga a modificar tu aplicación haciendo que cada vez que se inicie se compruebe si le llega ese parámetro. Si le llega modificas el código de inicio de tu aplicación y ejecutas la acción que realicen los botones que comentas. Si no le llega el parámetro (un inicio normal con doble click sobre archivo o acceso directo o...) realiza un inicio normal
Otra forma de ejecutar una tarea a una hora determinada (o a mas de una) es usar código asociado al evento timer de un formulario. Esto te obliga a tener la base de datos abierta (con equipo bloqueado si no estás...) pero es más sencillo de implementar. Basta con determinar en las propiedades de ese formulario el intervalo de tiempo en que se efectuará la comprobación y definir que hacer cuando llegue el momento. Me explico. Imaginemos que simplemente quisieras que se ejecute una acción entre las 23:00 y las 23:59. En la propiedad Intervalo del cronómetro podrías poner 3000000. Esto hace que cada 50 minutos se ejecute lo que escribas en el código que asociarás al evento 'Al cronometro'. Estos 3000000 son milisegundos, que si operas con ello son 50 minutos. Puedes establecer esta propiedad hasta en 2.147.483.647, que equivalen a 24 días y pico. Sabiendo que en este caso se va a ejecutar código cada 50 minutos, lo siguiente es escribir en la propiedad 'Al cronometro' un código parecido al siguiente:
Private Sub Form_Timer()
If Hour(Now) = 23 Then
Comando1_Click
End If
End Sub
Esto hace que a las 23 horas se ejecute el código asociado al evento click del botón llamado Comando1. Cambia la hora deseada y el nombre del botón por el que uses (o copia el código aqui si quieres hacer algo más como registrar un log...).
¿Haz? Alguna prueba poniendo intervalos cortos de tiempo (por ejemplo cada 10 segundos) y verás que es muy sencillo de manejar y versátil. Puedes usarlo para efectuar comprobaciones, hacer que parpadeen avisos (cambiando color y negrita en una etiqueta)...
¿Cordiales?
Gracias por responder ...
me podrias ayudar con un ejemplo de la segunda solucion , digamos q el comando q se va ejecutar es este
???Privade sub comando5_click()
borrar_pagos="DELETE*FROM CERTIFICACION_PAGOS"
CurrentDb.execute borrar_pagos
end sub
 y se ejecutara a las 6:30pm como lo pondo en el codigo form_timer
Para ejecutar a un ahora determinada basta con 'jugar' con los parámetros de intervalo del cronómetro.
Me explico. Si quieres que se ejecute exactamente a las 6:30 PM deberías de hacer una comprobación cada minuto de la hora del sistema. Si quieres hacerlo por ejemplo entre las 6:30 y 7:00 basta con que efectúes una comprobación cada 30 minutos.
Pongámonos en el primer caso (hora exacta).
En intervalo del cronometro pones 60000 (equivale a un minuto).
En en la propiedad 'Al cronometro' escribes un código parecido al siguiente:
Private Sub Form_Timer()
Dim miHora as Date
miHora=FormatDateTime(Now, vbShortTime)
If miHora = "18:30" Then
    comando5_Click
End If
End Sub
Con esto se comprueba cada minuto y cuando sean las 18:30 se ejecuta lo que esté asociado al evento click del botón comando5 (o escribes también aquí las instrucciones que se ejecutan en ese botón si las quieres cambiar en algo).
Si quieres exactitud no tengas miedo en que cada minuto se efectúe esta comprobación, ya que al equipo esto apenas le supone nada ya que hace una comprobación muy simple y breve.
Si quieres usar un intervalo (por ejemplo el de media hora) en vez de igualar miHora a un valor en concreto, buscas que sea mayor o igual que las 18:30 y menor que las 19:00.
Espero te sirva con esto. Si no tienes más dudas sobre ello hazme el favor de cerrar la pregunta para que me sea más manejable el listado de pendientes a las que debo de responder.
Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas