Autor |
Mensaje |
foreverjos
Usuario
Registrado: Octobre 2011
Mensajes: 3
Edad: 40
|
REFRESCAR LABEL EN WHILE
hola tengo una conexion a Mysql, y necesito hacer una serie de procesos a los registros que traigo de la base, pero necesito poner en un LABEL el numero de registro que se esta procesando, hice el siguiente codigo, pero mi LABEL no se refresca hasta que termina de recorrer los 162,777 registros, alguna idea de por que el label no se refresque conforme avanza el WHILE, este es mi codigo
PUBLIC SUB Button1_Click()
DIM blob1 AS Blob
DIM txt AS String
DIM cuenta, i AS Integer
Timer1.Enabled = FALSE
rs = cn.exec("SELECT dato FROM data_in")
rs.MoveFirst
cuenta = rs.Count
i = 1
WHILE i <= cuenta
blob1 = rs!dato
txt = blob1.Data
blbl_recorrido.Text = i 'aqui es el problema no lo refresca
PRINT i; 'aqui se ve que si avanza
i = i + 1
rs.MoveNext
WEND
END
|
#1 Lunes, 03 Octobre 2011, 23:00 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: REFRESCAR LABEL EN WHILE
Prueba ésto:
PUBLIC SUB Button1_Click()
DIM blob1 AS Blob
DIM txt AS String
DIM cuenta, i AS Integer
Timer1.Enabled = FALSE
rs = cn.exec("SELECT dato FROM data_in")
rs.MoveFirst
cuenta = rs.Count
i = 1
WHILE i <= cuenta
blob1 = rs!dato
txt = blob1.Data
blbl_recorrido.Text = i 'aqui es el problema no lo refresca
WAIT 0.1 'pausamos el programa una decima de segundo y en ese tiempo se realizan todas las operaciones de vídeo pendientes.
PRINT i; 'aqui se ve que si avanza
i = i + 1
rs.MoveNext
WEND
END
Suerte
=================== No podemos regresar
|
#2 Martes, 04 Octobre 2011, 10:47 |
|
|
foreverjos
Usuario
Registrado: Octobre 2011
Mensajes: 3
Edad: 40
|
Re: REFRESCAR LABEL EN WHILE
Gracias si funciono le puse 0.001 de tiempo
ahora tengo otra pregunta hay alguna forma de liberar memoria durante el prioceso, ya que conforme avanza el recorrido el uso del CPU va en aumento hasta llegar al 100% alguna idea
Gracias y perdona las molestias
Prueba ésto:
PUBLIC SUB Button1_Click()
DIM blob1 AS Blob
DIM txt AS String
DIM cuenta, i AS Integer
Timer1.Enabled = FALSE
rs = cn.exec("SELECT dato FROM data_in")
rs.MoveFirst
cuenta = rs.Count
i = 1
WHILE i <= cuenta
blob1 = rs!dato
txt = blob1.Data
blbl_recorrido.Text = i 'aqui es el problema no lo refresca
WAIT 0.1 'pausamos el programa una decima de segundo y en ese tiempo se realizan todas las operaciones de vídeo pendientes.
PRINT i; 'aqui se ve que si avanza
i = i + 1
rs.MoveNext
WEND
END
Suerte
|
#3 Martes, 04 Octobre 2011, 16:08 |
|
|
foreverjos
Usuario
Registrado: Octobre 2011
Mensajes: 3
Edad: 40
|
Re: REFRESCAR LABEL EN WHILE
Gracias si funciono le puse 0.001 de tiempo
ahora tengo otra pregunta hay alguna forma de liberar memoria durante el proceso, ya que conforme avanza el recorrido el uso del CPU va en aumento hasta llegar al 100% alguna idea
Gracias y perdona las molestias
Saludosss
última edición por foreverjos el Martes, 04 Octobre 2011, 17:14; editado 1 vez
|
#4 Martes, 04 Octobre 2011, 16:09 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: REFRESCAR LABEL EN WHILE
No veo ningún error obvio en tu código. Pero no conozco muy bien el asunto de cómo se tratan internamente los campos blob. Prueba a hacer tú la limpieza, de manera que no se acumule la basura, es decir:
WHILE i <= cuenta
blob1 = rs!dato
txt = blob1.Data
blbl_recorrido.Text = i 'aqui es el problema no lo refresca
WAIT 0.1 'pausamos el programa una decima de segundo y en ese tiempo se realizan todas las operaciones de vídeo pendientes.
PRINT i; 'aqui se ve que si avanza
i = i + 1
.... supongo que más o menos aquí harás tus tejemanejes con el campo blob.
.... después de eso
txt = nothing
rs.MoveNext
WEND
|
#5 Martes, 04 Octobre 2011, 19:08 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: REFRESCAR LABEL EN WHILE
hay alguna forma de liberar memoria durante el proceso, ya que conforme avanza el recorrido el uso del CPU va en aumento hasta llegar al 100%
Vamos a ver, una cosa es la memoria y otra diferente es el uso de CPU. Si el uso de CPU llega hasta el 100% durante la ejecución de tu código, será porque lo requiere el proceso, y eso no tiene una solución milagrosa... quizás estés manejando datos de un gran tamaño y una vez que entras en el bucle, pues ya no hay nada que hacer. Bueno, quizás cambiando el PC por otro más potente con muchos núcleos y todo eso,
Otra cosa es que la memoria libre se reduzca sensiblemente, pero eso ya te lo ha explicado muy bien el amigo shordi.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#6 Martes, 04 Octobre 2011, 20:12 |
|
|
|