refresh de formulario

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • refresh de formulario

    Gente, tengo un programa viejo 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

  • #2
    mas de 15 minutos es una barbaridad de tiempo, tu usuario tiene razón en impacientarse, salvo que tengas en tu TXT cientos de miles de registros o que mientras insertas el registro también estés ejecutando otros procesos.
    Supongo que recorres tu archivo de texto, en cada ciclo actualiza un label incrementando el valor pero a continuación ponle un DoEvents para que refresque tu front.

    Saludos
    --------------------------------
    Si eres agradecido, obtendrás más...

    YAcosta

    Comentario


    • #3
      Crea un Progressbar ancho casi tanto como tu formulario, de nombre, por ejemplo, PrgBar, con la propiedad Visible = False

      Cuando empieces a leer el archivo plano, pon este código

      Código:
          nMax = [Número total de líneas del fichero]
          nBar = 0
          PrgBar.Max = nMax
          PrgBar.Value = nBar
          PrgBar.Visible = True
      Y en el bucle de lectura/conversión, supongamos que es un For - Next

      Código:
          For x = 1 To nMax
                  ....
                  ....
                  nBar = nBar + 1
                  PrgBar.Value = nBar
                  xxx.MoveNext
          Next
          PrgBar.Visible = False
      José María Movilla Cuadrado
      ______________________
      Normas del foro
      www.foro.vb-mundo.com
      www.vb-mundo.com

      Comentario

      Trabajando...
      X