Imprimir página | Cerrar ventana

Calcular Vacaciones

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84905
Fecha de impresión: 27/Marzo/2026 a las 04:08


Tema: Calcular Vacaciones
Publicado por: Mariano75
Asunto: Calcular Vacaciones
Fecha de publicación: 19/Diciembre/2019 a las 15:50
Hola a todos, aquí los saludo desde Buenos Aires.  Les comento mi problema, no le encuentro la vuelta.  Espero me puedan dar una mano con esto.

Estoy armando una base de datos para calcular vacaciones de los trabajadores. Tengo un formulario asociado a tablas y unos controles asociados a macros.

Cuando abro el formulario necesitaría forzar la ejecución de 2 macros para ver los cálculos en dichos controles pero no logro hacerlo, lo que me pasa es que cada vez que abro el formulario, algunos registros aparecen con el cálculo y otros no... tengo que ir registro por registro, posicionarme dentro de cada campo para que la macro haga el cálculo y la verdad es muy incómodo dado que son casi 400 personas.  Los campos que necesitaría que se actualicen automáticamente son:

Auxiliar_AMD y DiasVacaciones

Al cargar el formulario Vacaciones se ejecuta el siguiente código, pero creo que no hace nada o por lo menos no es lo que necesito que haga:

Private Sub Form_Load()
    DoCmd.RunMacro "Auxiliar_AMD"
    DoCmd.RunMacro "CalcularVacaciones"
End Sub

Espero haber sido claro con el problema. Adjunto la base de datos para que se entienda mejor.

Aguardo sus comentarios y más que agradecido si pudieran darme una mano con este tema.

https://drive.google.com/open?id=1AyGrv-5zvIp8pWBh0cP8BbIJsBUwAW1F" rel="nofollow - https://drive.google.com/open?id=1AyGrv-5zvIp8pWBh0cP8BbIJsBUwAW1F


-------------
Atte.
Mariano



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 19/Diciembre/2019 a las 17:56
Por probar

Private Sub Form_Load()
    DoCmd.RunMacro "Auxiliar_AMD"
    DoCmd.RunMacro "CalcularVacaciones"
End Sub

Private Sub Form_Open(Cancel As Integer) 
   DoCmd.SelectObject acForm, Me.Name
   Me.Repaint
   DoEvents
End Sub


!Suerte!

Luis


-------------
El Búho es un pajarraco


Publicado por: Mariano75
Fecha de publicación: 19/Diciembre/2019 a las 18:33
Hola Luis! Gracias por tomarte el tiempo de leer y responder.

Probé de colocar ambas sentencias pero nada, luego probé de colocar la de abajo y tampoco... es decir, en el registro 1 si aparecen los cálculos pero desde el registro 2 en adelante ya no aparecen o aparece 1 cálculo pero no todo...

La verdad no se me ocurre qué puede ser?

Gracias igualmente por fijarte!!
Saludos!

Mariano


-------------
Atte.
Mariano


Publicado por: xavi
Fecha de publicación: 19/Diciembre/2019 a las 18:49
Si las macros se ejecutan únicamente para el primer registro... deberás recorrer todos los registros para lanzar las macros.

¿Que tal andamos de VBA? (porque yo de macros, lo justo)


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Mariano75
Fecha de publicación: 19/Diciembre/2019 a las 20:02
De VBA no tengo idea.

Si, justamente lo que quería evitar es recorrer registro por registro... seguramente debe haber algún procedimiento en VBA que haga lo que necesito pero no conozco tanto como para meterme en ese tema.

Estoy al horno!


-------------
Atte.
Mariano


Publicado por: mounir
Fecha de publicación: 20/Diciembre/2019 a las 17:37
Hola!

Funciona correctamente con poner el código también en el evento al activar e registro:-

Private Sub Form_Current()
    DoCmd.RunMacro "Auxiliar_AMD"
    DoCmd.RunMacro "CalcularVacaciones"
End Sub


-------------
Un Saludo.


Publicado por: Mariano75
Fecha de publicación: 20/Diciembre/2019 a las 18:02
Mounir, si lo probé y va de diez!!!!

La verdad me ayudaste muchísimo con este aporte....

Concretamente qué es lo que hace el código que me pasaste?  Porque inclusive probé de borrar los datos a mano del formulario y cuando me muevo por los registros, los vuelve a calcular...

La verdad impresionante!!! No sé nada de VBA y esto es fundamental para mi!!

Muchísimas gracias si hay alguna forma de calificarte por el aporte por favor decime que te califico.

Gracias!


-------------
Atte.
Mariano


Publicado por: Mariano75
Fecha de publicación: 20/Diciembre/2019 a las 18:03
Publicado originalmente por mounir mounir escribió:

Hola!

Funciona correctamente con poner el código también en el evento al activar e registro:-

Private Sub Form_Current()
    DoCmd.RunMacro "Auxiliar_AMD"
    DoCmd.RunMacro "CalcularVacaciones"
End Sub


Mounir, si lo probé y va de diez!!!!

La verdad me ayudaste muchísimo con este aporte....

Concretamente qué es lo que hace el código que me pasaste?  Porque inclusive probé de borrar los datos a mano del formulario y cuando me muevo por los registros, los vuelve a calcular...

La verdad impresionante!!! No sé nada de VBA y esto es fundamental para mi!!

Muchísimas gracias si hay alguna forma de calificarte por el aporte por favor decime que te califico.

Gracias!


-------------
Atte.
Mariano


Publicado por: mounir
Fecha de publicación: 20/Diciembre/2019 a las 18:08
Hola!

Me alegro mucho de que te haya funcionado.

Lo que hace este evento te dejo lo que dice Microsoft

https://docs.microsoft.com/es-es/office/vba/api/access.form.current" rel="nofollow - Evento Form.Current (Access)



-------------
Un Saludo.


Publicado por: Mariano75
Fecha de publicación: 20/Diciembre/2019 a las 18:17
Muchas gracias!! Clap


-------------
Atte.
Mariano


Publicado por: mounir
Fecha de publicación: 20/Diciembre/2019 a las 18:18
Hola!

El problema que tenías era que pusiste el código en un evento estático, es decir, se produce solo una vez y es al cargar o abrir el formulario, mientras el evento al activar el registro hace como si abrieses de nuevo el formulario cada vez que te desplazabas a un registro y ,por consiguiente, llama a los macros.

-------------
Un Saludo.


Publicado por: Mariano75
Fecha de publicación: 21/Diciembre/2019 a las 00:11
Claro, comprendo.... luego de probarlo me di cuenta de algo.... estando dentro del formulario, si yo le cambio la fecha de ingreso a alguna persona (y por ende le cambia la antigüedad), no calcula automáticamente... tal como decís vos, tengo que salir del formulario y volver a entrar para que vuelva a calcular pero eso es lo de menos...

Por lo pronto me pudiste destrabar, ahora voy a poder seguir editando el formulario dado que tengo que seguir haciendo un par de cálculos más...


-------------
Atte.
Mariano



Imprimir página | Cerrar ventana