Visual Basic - refresh de formulario

Life is soft - evento anual de software empresarial
 
Vista:

refresh de formulario

Publicado por Gabriel (3 intervenciones) el 02/10/2018 17:46:19
Gente, tengo un programa vieja en VB6 que me hace una actualización de base de datos desde un archivo plano txt, la cosa que dicho proceso dura aproximadamente 15 o 20 minutos o mas y el usuario que usa esta aplicación como es impaciente a los minutos me aborta el programa creyendo que esta colgado por lo que me genera numerosos inconvenientes. La idea es generar un contador de lineas para que el usuario vea que el proceso esta corriendo y tenga idea de cuantas lineas falta para terminar el proceso, el problema me radica que le he puesto un contador en un timer e inclusive en el loop del copiado de lineas hacia la base de datos pero nunca logro que me refresque el formulario, a lo sumo me lo refresca los primeros 10 segundos y después como que cuelga y no refresca mas aunque el proceso sigue en segundo plano pero la interface de la aplicación aparece como colgada (con el mensaje de no responde). Alguna idea para ayudarme. (abstenerse los que como solución tengan migrar a .net). Uso sistemas operativos XP y 7. Gracias a los que me puedan ayudar
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 Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

refresh de formulario

Publicado por Antoni Masana (558 intervenciones) el 03/10/2018 07:24:38
Pon en el bucle del procesamiento del fichero uno o varios Refresh y DoEvents. Este último hace que Windows tome el control y refresque y quite la sensación de colgado.

Puedes usar un contador de registros o una barra de porcentaje del tamaño del fichero tratado.

Pongo un pequeño ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
Sub ...
    Open "Fichero_de_Texto" ...
    While Not Eof
         Call Leer
         DoEvents          ' <--- Aqui esta lo que evita la sensación de cuelgue.
         Call Grabar
    Wend
End Sub
 
Sub Timer
      Display de la evolución del proceso
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

refresh de formulario

Publicado por Andres Leonardo (1798 intervenciones) el 03/10/2018 15:33:48
Podrias usar una barra de progreso ,.
adicional averigua sobre el tema de do events

si puedes subir algo del proceso si no como ejemplo te doy esto
**Otra cosa que podrias hacer es optimizar el como se realiza la actualizacion de base... claro esta que necesitariamos saber la base que tipo es. que version


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