Access - Evento sobre formulario

   
Vista:

Evento sobre formulario

Publicado por Javier (10 intervenciones) el 28/03/2018 12:16:28
Hola a todos y gracias de antemano.

No sé si se puede hacer lo que quiero.
Tengo un formulario con muchos controles de tipo textBox. Necesito que se ejecute una macro cuando uno de ellos cambia de valor.

Pero programar un evento para cada control es algo tedioso.

He pensado en recoger el nombre del control que ha cambiado de valor mediante el evento BeforeUpdate o AfterUpdate del propio formulario, pero no sé como conseguir eso (Y como he dicho, tampoco sé si se puede)
y buscando por internet tampoco he encontrado mucha información.

Alguien sabe como podría conseguirlo??

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto

Evento sobre formulario

Publicado por Norberto (613 intervenciones) el 28/03/2018 14:30:35
Hola.

Puedes usar el evento OnDirty (En datos no guardados) para detectar cualquier cambio en el formulario. Como el cambio se estará dando en el control (cuadro de texto, etc.) activo, a través de Me.ActiveControl puedes saber cuál es el que está siendo modificado y proceder.

Lo que pasará en este caso es que el evento ya no se volverá a producir mientras no se guarden los cambios aunque se modifique otro control. Ello hará imposible saber si algún otro comienza a cambiar.

Para evitarlo, puedes hacer una macro (macro, macro, no procedimiento de evento) que llame a una función de VBA en la que controlas los cambios. Esa macro la puedes asignar a todos los controles a la vez. De esto último te adjunto un ejemplo.

Espero que te sirva y un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Evento sobre formulario

Publicado por Javier (10 intervenciones) el 28/03/2018 15:12:37
Gracias Norberto. Tiene buena pinta. Muy secillo y sobre todo ahorra mucho código.

Pero me han dado otra idea en otro foro que pienso también es buena.

En la vista diseño del formulario, se selccionan todos los controles que quieras controlar, y en sus propiedades, se selecciona el evento que quieres y escribes "=Funcion()".

Esto hace referencia a una función que se ha tenido que programar dentro del propio formulario, en la cual puedes capturar el nombre del control activo, o llamar a una macro o procedimiento, y a partir de ahí realizar la acción que necesites.

Gracias por el ejemplo, lo tendré en cuenta en un formulario que tengo que construir más adelante muy parecido al que has puesto.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad