Ejecutar tarea programada en access

Alguien me podría indicar como activar una consulta desde vba todos los días a cierta hora, sin necesidad que el operador oprima algún botón, es decir que lo haga automáticamente.

1 Respuesta

Respuesta
1

Se puede hacer desde un formulario usando el Timer. Tienes que tener en cuenta que el operador tiene que tener abierto ese formulario. Si sólo trabajan sobre uno, ponlo en ese formulario. Si no es así y no tienen porque tener abierto un formulario, crea un pequeño formulario independiente y haz que se abra oculto cuando se abre la BD.

En las propiedades de ese formulario vas a intervalo del cronometro y le pones 1000 (1 segundo)

En el evento "al cronometro" pones el siguiente codigo:

Dim mihora As Integer 
mihora = Hour(Now) 
If mihora = 11 Then 
DoCmd.OpenQuery "nombre de la consulta" 
Me.TimerInterval = 3600000 
Else 
Me.TimerInterval = 1000 
End If

Lógicamente dónde pone "If mihora = 11" cambia el 11 por la hora a la que quieres que se ejecute la consulta (ten en cuenta que hour devuelve de 0 a 23 horas, es decir a las 12 de la noche devolvera 0).
Luego lo que hace el código es cambiar el intervalo para que no abra la consulta cada segundo, por lo que no volvera a desatarse el evento hasta transcurrido una hora, momento en el que volvemos a poner el intervalo en 1 segundo.

Si sólo lo tiene que hacer en una hora del día puedes cambiar el 3600000 por 85800000 así evitas que el formulario este ejecutando el código cada segundo una vez que se ha producido el evento.

Visita Access fácil

Buenas noches, más o menos entiendo lo que me quieres decir, el tema consiste en que cada 3 minutos se actualiza remotamente una base al servidor, entonces se necesita que cada 3 o 4 minutos se ejecute la consulta para refrescar información, esta consulta debe ser ejecutada desde las 6 am a las 6 pm todos los días, ¿es posible programarla de esta forma?

De antemano muchas gracias

Perdón por el retraso, me has pillado de puente. Para lo que quieres cambia el anterior código por este otro:

Dim mihora As Integer 
 mihora = Hour(Now) 
 If mihora > 5 and mihora < 19 Then 
 DoCmd.OpenQuery "nombre de la consulta"  
 End If

Y en el intervalo de cronometro del formulario le pones  180000 (3 minutos) o 240000 (4 minutos)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas