Evitar el parpadeo de un Formulario al realizar cálculos

Tengo un Formulario continuo Principal que desde un botón acceso a otro Form donde realizo cálculos y después de su finalización pasa los resultado al Principal.

Este segundo form trabaja de forma oculta.

Con cada una de las instruncciones: Refresh, Requery, Calc utilizo:

Me.Painting = False

........

Me.Painting = True

Lo que necesito es evitar que el Formulario principal NO de parpadeos por cada una de las operaciones que realiza el segundo Form.

1 respuesta

Respuesta
1

Para evitar esa molesta perturbación, lo más adecuado es desactivar (con ECHO) la pantalla, no es un método que me satisfaga, porque un ‘problema’ puede impedir retomar el control.

Hay ocasiones en las que la molestia la produce por unas leves diferencias entre el tamaño del formulario (como contendor) y su contenido, lo que le obliga a ‘mover’ la pantalla para seguir el ritmo de los procesos.

La solución ideal es NO interactuar con la pantalla, casi siempre es más rápido y eficaz el utilizar el RecordsetClone del formulario en lugar de recorrer ‘físicamente’ los registros del mismo.

Tengo un Formulario continuo que están los totalidad de los Productos. Al pulsar sobre el Campo PVP abre otro formulario de forma oculta y allí en ese form lo que hace es calcular el PVP.

No tiene un recorrido de registros solo realiza el Calculo a través de diferentes operaciones.

¿Cómo podría utilizar en este caso el RecordsetClone que me indicas?

En principio supuse que se trataba de una actualización de todo el conjunto de registros, modificando solo el registro actual, no debería haber parpadeo.

No tengo clara la necesidad de abrir un formulario para hacer cálculos con los datos del registro actual mediante otro formulario, los datos que se necesitan están en el formulario y registro activo (aun cuando sea un subformulario) que por muy continuo que sea y no lo aparente, solo tiene un registro (el activo).

Los que se necesiten externos pueden obtenerse con DLookup o un Recordset (depende de los datos a obtener), pero utilizar un formulario para hacerlos no lo creo necesario con la excepción de necesitar interactuar con ellos.

Según sea la interactuación con el oculto, este puede necesitar obtener el foco (solo se puede interactuar con un objeto que este activo) y ello causa el parpadeo (al 'saltar' entre ambos formularios).

Para hacer cálculos solo se precisan datos, si es imprescindible un formulario será porque se requieren mas datos que no se pueden obtener por otros medios (por ejemplo el tipo de cliente para adjudicarle un descuento que no esta catalogado), pero es solo una suposición que nace de la falta de información.

En los formularios (que tienen un origen de datos) se puede acceder a todos los datos que contiene mediante la copia oculta que se crea al abrirlos (el 'RecordsetClone') y mediante él, manipular todos los registros sin desplazarse ni incordiar al registro actual.

No hace falta declararlo (nace con el formulario) y es una copia fiel de su contenido, incluso permite crear nuevos registros en tiempo de ejecución, editarlos ... etc.

SI puedes publicar/ampliar la metodología de lo que has programado, se podrán analizar alternativas (que sin formularios ocultos pueden ahorrar tiempos muertos, en definitiva aumentar el rendimiento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas