Deja de verse el movimiento de un progress bar.

01/11/2004 - 13:34 por David Sans | Informe spam
Hola

Tengo un trozo de código que lee de un fichero, una serie de registros y los quiero exportar a SQL Server.
Depende de los registros puede tardar varios minutos.

En el formulario tengo un progress bar y un label con el número de registros que quedan por procesar. Si no muevo el formulario, ni
cambio
de ventana se ve correctamente, pero si muevo la ventana o me voy a otra ventana y vuelvo no se refresca ni el formulario ni la
etiqueta ni el progress bar. Cada vez que modifico el valor del progressbar y el label los refresco.

Como tendría que hacerlo?

Os pongo parte del código.

Sub TrasFitxASql(ByVal NomFitxer As String, ByRef ElProgresBar As ProgressBar, ByRef LaEtiqueta As Label)
Dim st As Integer
Dim x As Integer = 0
Dim Quedan As Integer
Quedan = CInt(LaEtiqueta.Text)
st = btr(bt.Abrir, 1, NomFitxer, 0)
If st = 0 Then
st = btr(bt.LeerPrimero, 1, NomFitxer, 0)
While st = 0
x = x + 1
Quedan = Quedan - 1
LaEtiqueta.Text = Format(Quedan, "###,####,###")
LaEtiqueta.Refresh()
ElProgresBar.Value = x
ElProgresBar.Refresh()
Debug.WriteLine(f9(1, 1) & " " & f9(2, 1))
st = btr(bt.LeerSiguiente, 1, f9(1, 1), 0)
End While
btr(bt.Cerrar, 1, "", 0)
End If
End Sub

Un Saludo
David
 

Leer las respuestas

#1 Oscar
01/11/2004 - 14:41 | Informe spam
Hola, en vez de hacer el refresh a cada vuelta de bucle prueba poner application.doevents()

saludos,

"David Sans" escribió en el mensaje
news:
Hola

Tengo un trozo de código que lee de un fichero, una serie de registros y los quiero exportar a


SQL Server.
Depende de los registros puede tardar varios minutos.

En el formulario tengo un progress bar y un label con el número de registros que quedan por


procesar. Si no muevo el formulario, ni
cambio
de ventana se ve correctamente, pero si muevo la ventana o me voy a otra ventana y vuelvo no se


refresca ni el formulario ni la
etiqueta ni el progress bar. Cada vez que modifico el valor del progressbar y el label los


refresco.

Como tendría que hacerlo?

Os pongo parte del código.

Sub TrasFitxASql(ByVal NomFitxer As String, ByRef ElProgresBar As ProgressBar, ByRef LaEtiqueta As


Label)
Dim st As Integer
Dim x As Integer = 0
Dim Quedan As Integer
Quedan = CInt(LaEtiqueta.Text)
st = btr(bt.Abrir, 1, NomFitxer, 0)
If st = 0 Then
st = btr(bt.LeerPrimero, 1, NomFitxer, 0)
While st = 0
x = x + 1
Quedan = Quedan - 1
LaEtiqueta.Text = Format(Quedan, "###,####,###")
LaEtiqueta.Refresh()
ElProgresBar.Value = x
ElProgresBar.Refresh()
Debug.WriteLine(f9(1, 1) & " " & f9(2, 1))
st = btr(bt.LeerSiguiente, 1, f9(1, 1), 0)
End While
btr(bt.Cerrar, 1, "", 0)
End If
End Sub

Un Saludo
David



Preguntas similares