Somos Expertos Access. Contacto atravez de Skype Skype logo expertos_7

Evite el efecto atrapado en el tiempo

Aquí se utilizan mucho los subformularios. A veces, podemos tener añadidos más de 5 o 6 por formularios. Estos pueden ser una verdadera molestia en el rendimiento si no tiene cuidado. Esta es la primera parte de dos. Más adelante Ben le hablara de como deshabilitar lo subformularios ante de que sean cargados.

Los subformularios se cargan primero primero

Agregando un subformulario alterará la secuencia de eventos de la aplicación, en lugar de que el formulario principal se disparare primero, los subformularios toman el control y dispararan sus eventos, se apagarán los eventos del formulario principal. Con la siguiente secuencia:

  • Abrir el evento del formulario principal
  • Cargar el evento del formulario principal
  • Abrir el evento del subformulario x
  • Cargar el evento del subformulario x

En cambio, el orden de los acontecimientos cambia:

  • Abrir el evento del subformulario x
  • Cargar el evento del subformulario x
  • Abrir el evento del formulario principal
  • Cargar el evento del formulario principal

Efecto atrapado en el tiempo

Si usted no tiene cuidado, los eventos open y load de su subformularios se dispararan varias veces, bajo ciertas condiciones, retrasando su aplicación y haciendo que se sienta como si estuviera en la película “Atrapado en el tiempo”. Por ejemplo, si usted cambia la propiedad recordsource de su subformularios en el evento open del formulario principal, la secuencia se disparara de este modo:

  • Todos los eventos open y load de su subformularios se ejecutan./li>
  • El evento open del formulario principal se dispara y cambiara el recordsource de sus subformularios.
  • Los subformularios se disparan de nuevo
  • El Control vuelve al formulario principal y ahora se filtran los registros
  • Los subformularios se disparan de nuevo
  • El control vuelve al formulario principal y el resto de los códigos se ejecutan

La secuencia anterior puede significar que su aplicación puede tardar varios segundos en cargar un formulario, mucho más si se trata de la lectura de datos desde la nube. El ciclo sólo se seguirá repitiendo en base a lo que hace su formulario principal.

Utilice una variable pública en el formulario principal para controlar el flujo de datos

No se puede cambiar el comportamiento de Access, pero se puede minimizar el impacto de dos maneras: mediante la separación de los códigos en sus propios procedimientos y mediante el uso de una variable global en el formulario principal. A continuación, puede comprobar el valor de la variable en los subformularios y detiene la ejecución hasta que el formulario principal haya terminado de cargarse.

La separación de código

Es muy tentador hacerlo todo a la vez en un solo evento y a menudo se puede, pero como se dijo anteriormente, haciendo ciertas acciones en un evento puede provocar muchos acontecimientos que sólo pueden servir para complicarlo todo y que el proceso sea más lento. Por lo tanto, unas reglas generales deben ser aplicadas para la asignación del código:

Utilice la condición WHERE para realizar filtros en los formularios a través de DoCmd.OpenForm siempre que sea posible.
Solo utilice el evento de open para comprobar si se permite abrir el formulario.
Utilice el evento load para establecer los valores predeterminados y modifique recourdsource solo si apropiado.
Utilice el evento current solo para manipular el registro actual.

Normalmente, esto ayuda en la mayoría de las circunstancias, pero a veces tenemos formularios más complicados en los que necesitamos controlar el orden y ahí es donde se utiliza el siguiente ítem…

Uso de variable pública

En primer lugar, agregue una variable Module Level en el formulario principal:

Después, agregue el siguiente código en el evento Load de cada subformulario:

Una vez que el formulario principal ha terminado de cargarse, cambie el valor en True:

Siempre que el subformulario tenga un procedimiento público denominado FinishLoading.

También puede llamar al procedimiento FinishLoading desde el evento Load del subformulario, especialmente después de que el formulario principal haya terminado de cargar, en cuyo caso el código se verá como este:

Con este procedimiento especial, se está asegurando de que el código se ejecutara siempre que el evento Load de los subformularios se haya disparado o siempre que el evento Load del formulario principal se haya disparado pero no cuando el formulario principal este aun cargando.
¡Felices Fiesta!

Acerca de

Juan Soto es un desarrollador senior de Access en IT Impact Inc. y un MVP de Microsoft Access y se especializa en Access con bases de datos de SQL Server. Su pasión por el acceso lo ha llevado ayudar a una amplia gama de empresas a establecer un entorno seguro, estable y eficiente con SQL Server. Él es un orador frecuente en los grupos de usuarios de Access en todo el país y recientemente habló en el Orange County SQL Saturday # 73. Si desea que Juan hable en su próxima reunión de grupo, puede ponerse en contacto con él aquí.

Publicado en Access Help, Uncategorized, VBA
0 Comentarios en “Evite el efecto atrapado en el tiempo
    1 Pings/Trackbacks para "Evite el efecto atrapado en el tiempo"
    1. Retrasos al cargar subformularios | EXPERTOS MICROSOFT ACCESS +1-773-809-5456 dice:

      […] la primera parte , Juan habló de la secuencia de eventos disparados al cargar un formulario con un número de […]

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    *

     

    Quienes Somos

    ExpertosMicrosoftAccess.com es un servicio de la empresa IT Impact, Inc., una compañía de programación y servicios para empresas en Latino América. Ofrecemos servicios en .Net, SQL Server y Microsoft Access. Muchos de nuestros desarrolladores han obtenido el galardón de Access MVP, un título proveído por Microsoft a aquellos que han hecho aportes a la comunidad y que han demostrado tener conocimientos superiores del producto.

    Nuestro Equipo

    • Le ayudamos a "Descubrir el poder de sus datos™" con reportes y sistemas de Access excepcionales .
    • Creamos soluciones de bases de datos personalizadas utilizando Microsoft Access y / o SQL Server.
    • Nuestros consultores ganaron sus estrellas en las empresas de servicios y/o manufactura antes de convertirse en programadores.

    Blogs anteriores