Crear consulta de actualización con código vba en access. (date diff)

Tengo un proyecto, el cual cuenta con una tabla con tres columnas de fecha, y dos columnas(diferencia 1, diferencia 2) para contar los días hábiles transcurridos entre estas fechas.

Fecha de inicio

Fecha de termino

Fecha actual del sistema

Diferencia 1: aquí se calcula los días hábiles entre fecha de inicio y fecha de termino

Diferencia 2: aquí se calcula los días hábiles entre fecha de inicio y fecha actual del sistema.

Todo esto lo hago con una consulta de actualización que rellena la columna de fecha actual del sistema cada vez que se abre la base. Y las diferencias las calculo igual con esta consulta con difffecha.

Sin embargo la ejecución de esta consulta tarda mucho, y requiero migrar esta consulta a código vba para que corra y actualiza datos mucho mas rápido (en la tabla son 50,000 mil registros).

¿Alguien puede ayudarme con esto? No se como hacer referencia a estas alumnas dentro del código y mucho menos me sale la función datediff.

1 Respuesta

Respuesta
2

Hacer la consulta en código VBA es muy sencillo:

1º/ Abre tu consulta de actualización en Vista Diseño, cambia a Vista SQL y copia el texto SQL de esa cosnulta.

2º/ Vete al editor de VBA, y en el evento en que quieras que se ejecute la consulta (imagino que en el de un botón), pones:

CurrentDb. Execute "textoSQL"

Donde en vez de textoSQL pones la SQL de la consulta que has copiado en el primer paso.

Si en la SQL tienes puntos y comas (;) como separadores, tendrás que cambiarlos por comas (,) para que no te de error el código.

Pero sinceramente, no creo que notes mucha diferencia en hacerlo de una forma u otra, porque la consulta es la misma...

Si me permites el consejo, yo cambiaría el sistema, y eliminaría de la tabla los campos fecha actual y los dos de diferencia. Luego haría una consulta sobre la tabla, cogiendo los campos fecha inicio y fecha término, añadiría un campo "fecha actual" con la función Fecha() y los dos campos diferencia con las expresiones que ya tienes en tu consulta de actualización. Y eliminaría la consulta de actualización.

Con esto consigues dos cosas:

1º/ Eliminar de tu tabla los campos calculados y tener que estar actualizándolos cada día por medio de la consulta de actualización

2º/ Tenerlos en una consulta siempre actualizados (los cálculos se realizan cada vez que la abres)

Un saludo.


     bit.ly/ForoNkSv 

Hola muchas gracias por el consejo, ¿podrías proporcionarme un poco más de detalle por favor? si es posible con un ejemplo...

La consulta sobre la tabla nueva, ¿debe con este proceso ser más rápida? Estamos hablando que es la misma cantidad de datos.

Entiendo que la fecha actual no necesitamos guardarla en las tablas estaría solo en la consulta y esta bien los que si necesito almacenar en la tabla son los de diferencia, ¿tenemos problema con esto?

Mil gracias por tu tiempo y apoyo.

Realmente no necesitas almacenar en la tabla las diferencias, pues siempre las tendrás disponibles en la consulta (es lo mismo que la fecha actual), y trabajar con una tabla y una consulta es exactamente lo mismo.

Te dejo un ejemplo "a lo rápido" para que veas que con 50000 registros, la consulta de selección que te propongo se ejecuta y calcula las diferencias casi al instante: http://filebig.net/files/MYh2Qhy2E6

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas