Access - Error con la macro Autokeys

   
Vista:
Imágen de perfil de Jose

Error con la macro Autokeys

Publicado por Jose jose@jisistemas.es (12 intervenciones) el 13/08/2015 16:52:20
Hola,
Tengo un problema que no consigo resolver, me explico:
Estoy desarrollando una aplicación en Access 2010 (64 bits).
Los menús de la misma son mediante formularios de navegación.
Tengo solamente una macro en la aplicación que se llama Autokeys. Esta macro controla si pulsas determinadas teclas como Ctrl+F1 .... Ctrl+F5 u otras. Esta pulsación abre un formulario determinado y funciona correctamente.
Pues bien, al moverme entre las opciones del menú, cualquiera que sea, funciona sin problemas. El problema esta que después de llamar cualquier tecla que este contemplada en la macro, Ctrl+F3, por ejemplo, al cerrar el formulario que me ha abierto la macro e intentar cambiar a otro formulario por medio de las opciones de los menús de navegación me da siempre el mensaje:
¿Desea guardar los cambios en el diseño del formulario 'xxxxxxxxxxxx'?

Tengo toda la aplicación con la instrucción Docmd.Setwarnings False. (Ya se que no se recomienda)

En la configuración general de Access, configuración del cliente, están sin activar los avisos de confirmar los cambios en los registros, eliminaciones de documento y consultas de acción.

Curiosamente si pulsas cualquier tecla que no este en los Autokeys, (por ejemplo Ctrl+F10) no muestra el mensaje.

¿Hay alguna variable, método, propiedad que indique si ha habido cambios en el diseño del formulario y así poder controlarlo, ¿como controlarlo con los formularios de navegación?

Las dos posibilidades que contemplo y se me ocurren son olvidarme de las macros, pero eso implicaría que en todos los formularios tendría que añadir el método Form_KeyDown y son mas de 250 formularios ya generados. Y la otra, que también la tendría de añadir en todos los formularios seria al cerrar el formulario le indicase DoCmd.Close acForm, Me.Name, acSaveNo, pero esta ultima me da error al colocarla en el método Form_Unload

Agradezco de antemano la colaboración.
Jose.
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

Error con la macro Autokeys

Publicado por Enrique Heliodoro (1663 intervenciones) el 13/08/2015 17:32:44
No hay información que permita obtener lo indispensable para poder dar un punto de vista.

Pero si se me permite, creo que hay una cierta confusión con respecto a los mensajes de aviso y su anulación.
Por ejemplo: Docmd.Setwarnings False solo afecta a la s consultas de acción y asimiladas (no a las modificaciones DE DISEÑO de los formularios, los cuales SI se ven afectadas por DoCmd.Close acForm, Me.Name, acSaveNo)

La Macro AutoKeys tiene la supuesta ventaja (e inconveniente) de que actúa a nivel de toda la aplicación, pero no debería dar ese síntoma (algo hay que lo causa)

Automatizar mediante un proceso la generación de código en los formularios, es una tarea que no tiene mayor dificultad:
Se crea un bucle que recorra los formularios (o una parte de ellos)
Se abre en modo diseño (y oculto si se desea)
Se le añaden las líneas (se supone que 'son las mismas' para todos)
Se cierra guardando los cambios (es cuando se deberá poner a true la opción de guardar cambios al cerrar el formulario)
se continua con el siguiente hasta final del bucle.

Desconozco la aplicación, pero 250 formularios .... me viene a decir que la aplicación no esta muy optimizada es muy probable que con la decima parte todo siga funcionando (pero insisto en que desconozco la aplicación en si misma).
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
Imágen de perfil de Jose

Error con la macro Autokeys

Publicado por Jose jose@jisistemas.es (12 intervenciones) el 13/08/2015 20:39:05
Gracias Enrique por contestar tan rápido,

Si, yo también entendía que el Docmd.Setwarnings afecta solamente a las consultas de acción, pero era por si podía afectar indirectamente porque no encuentro la causa que genera el mensaje.

Respecto a automatizar el proceso de generación de código en los formularios, tienes razón con recorrer todos los formularios que necesites de la colección AllForms, abrirlos, ir añadiendo las lineas de código manualmente, y luego cerrarlos indicando acSaveYes no tiene dificultad, ¿pero se puede hacer mediante código automáticamente?.

Algo recuerdo haber leído sobre poder escribir, modificar y/o borrar lineas de código mediante propio código, pero sinceramente estoy perdido. ¿me puedes orientar?. Tengo presente que habrá que controlar que donde lo haces no existe ya anteriormente el nuevo sub a añadir, ya que daría error al compilar "se ha detectado un nombre ambiguo" .

Te explico, posiblemente se pueda mejorar y optimizar muchísimo la aplicación (>250 formularios), pero la aplicación es para una asesoría que contiene una gestión de la propia asesoría, otra de contabilidad, otra de empresas de construcción, de facturación de obrador de pastelería, de asociaciones de comerciantes y una empresas de transporte ...

En la aplicación hay muchos módulos (y/o grupos de formularios) comunes a todas ellas y seria conveniente en separarlos en proyectos distintos y hacer por ejemplo complementos de los elementos comunes, pero eso lo analizare y estudiare cuando este el proyecto mas "maduro". De momento lo que he hecho es otro "modulo, por así llamarlo" que recorre todos los objetos de la aplicación que determina y genera el accde con los módulos que corresponden a una instalación determinada en cada cliente.

Saludos.
(Adjunto la macro Autokeys)
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