** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Calcular Vacaciones
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCalcular Vacaciones

 Responder Responder
Autor
Mensaje
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Tema: Calcular Vacaciones
    Enviado: 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.

Atte.
Mariano
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3878
Enlace directo a este mensaje Enviado: 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
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 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.
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 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
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 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

Evento Form.Current (Access)

Un Saludo.
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 20/Diciembre/2019 a las 18:17
Muchas gracias!! Clap
Atte.
Mariano
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 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.
Arriba
Mariano75 Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 19/Diciembre/2019
Localización: Buenos Aires
Estado: Sin conexión
Puntos: 14
Enlace directo a este mensaje Enviado: 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable