Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
[SOLUCIONADO] ProgressBar, Wait Y Mi Paciencia
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [SOLUCIONADO] ProgressBar, Wait Y Mi Paciencia 
 
Vale, debería haber sido más explícito en el asunto, pero es que hay veces que «me se» come la moral estas cosas.
La cuestión es que tengo un programa que selecciona una serie de registros de una base de datos y hace unos cálculos. Como éstos tardan un poco me he decidido poner un «ProgressBar». Pero al principio no hacía nada, así es que brujuleando por ahí, vi que había que ponerle un «Wait» detrás. Y entonces se ralentiza la cosa. Pongo el ejemplo:

Public Sub cmdCalcular_Click()
  'Aquí van las otras declaraciones
  
  Dim Tic, Tac As Float
  
  Tic = Now()
  
 
  MaxEst = dtbEstrellas2.View.Rows.Count
  For i = 1 To MaxEst

    'Aquí va el código del bucle
    
    ProgressBar1.Value = i / MaxEst
    Wait    
    
  Next
  
  
  ProgressBar1.Value = 0
  
  Tac = Now()
  Debug (Tac - Tic) * 24 * 3600
  
End
 

Hecho así tarda como 75 segundos.

Si sustituyo la línea del Prograsbarr y el wait por:

Me.Caption = Format(i / MaxEst, "0%")


Tarda unos dos segundos.
Y si no pongo nada, tarda menos de un segundo.
Por tanto:
a) Yo soy muy torpe y me estoy saltando algo.
b) PrograssBar es una castaña. ¿Hay alguna alternativa más rápida que tenga mejor aspecto que mostrar directamente el porcentaje en algún campo?
Gracias de antemano.
 



 
última edición por Grandamakulo el Jueves, 02 Agosto 2018, 20:24; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
yo le suelo poner un Repeat ... Until y un contador que incremento.
Pero si el avance depende de un calculo con datos de una base es difícil estimar cuanto del calculo se ha hecho ya, verdad?
Si lograses fraccionar el trabajo en partes y cada vez que se completa una parte haces un ciclo de un bucle ya estaria solucionado.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
No pongas el wait en cada iteración del bucle, ponlo cada 10 o cada 50 y se acelera mucho más
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
tincho escribió:  
yo le suelo poner un Repeat ... Until y un contador que incremento.
Pero si el avance depende de un calculo con datos de una base es difícil estimar cuanto del calculo se ha hecho ya, verdad?
Si lograses fraccionar el trabajo en partes y cada vez que se completa una parte haces un ciclo de un bucle ya estaria solucionado.

Saludos.

 Tincho, gracias por tu respuesta. Bueno, ya está dentro de un bucle y precisamente el porcentaje de avance es el contador del bucle entre el máximo número de ítems. El problema es que actualizo el ProgressBar1.Value pero no me lo cambia en el programa salvo que le coloque después un «wait» que es lo que me lo ralentiza. Seguro que me estoy saltando algo.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
Grandamakulo: Hice un ejemplo, espero que te ayude

Saludos.

ejemplo-progressbar-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-progressbar-0.0.1.tar.gz
Tamaño: 11.2 KB
Descargado: 31 veces
ejemplo-progressbar-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-progressbar-0.0.1.tar.gz
Tamaño: 11.2 KB
Descargado: 31 veces
ejemplo-progressbar-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-progressbar-0.0.1.tar.gz
Tamaño: 11.2 KB
Descargado: 31 veces

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
Gracias, Tincho, por el ejemplo. Efectivamente, pasa lo mismo. Si eludo el «wait», aunque haga el paso más pequeño para poder apreciar el cambio, el control no se actualiza. Pero si lo pongo va muchíííííííísimo más lento.
Me parece que pondré el porcentaje en una etiqueta y punto.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
Grandamakulo escribió:  
Gracias, Tincho, por el ejemplo. Efectivamente, pasa lo mismo. Si eludo el «wait», aunque haga el paso más pequeño para poder apreciar el cambio, el control no se actualiza. Pero si lo pongo va muchíííííííísimo más lento.
Me parece que pondré el porcentaje en una etiqueta y punto.
insisto: coloca el wait en los múltiplos de 100 iteraciones. Correrá más.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
Otra cosa que se me ocurre es que pongas el wait 0.001 en vez de solo wait.
Prueba con eso.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
tincho escribió:  
Otra cosa que se me ocurre es que pongas el wait 0.001 en vez de solo wait.


Exactamente, tincho.

Quizás podrìa ser bastante 0.01
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ProgressBar, Wait Y Mi Paciencia 
 
Shordi: Sí, llevas razón. Lo he probado y para igualar poner un porcentaje en un «label» ando por los 250 —luego explico cómo hago la comprobación de forma rapidísima, casi sin operaciones en coma flotante—. El «label» es bastante continuo —salvo con mis problemas con el procesador al 100%   — y el otro da saltos relativamente grandes; sí, efectivamente, 250 veces más grandes. Aunque la idea me tienta por la apariencia, claro: queda mucho más bonito el «prograssbar» que el porcentaje a secas  

Tincho y Voutt
: el «wait» lo he probado de mil maneras y el mínimo está en unas cuarenta veces —sí, 40— más lento que con la etiqueta.

Así es que creo que colocaré el porcentaje en una etiqueta. Includo voy a probar a cambiar el color de la etiqueta, a ver qué tal va de velocidad.

Muchas gracias a todos por vuestros consejos.

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ProgressBar No Se Ve... ariel Controles/Librerías/Componentes 5 Miercoles, 13 Octobre 2010, 23:11 Ver último mensaje
ariel
No hay nuevos mensajes Como Usar ProgressBar aristicol Controles/Librerías/Componentes 8 Martes, 26 Abril 2011, 18:40 Ver último mensaje
skaterleopoldo12
No hay nuevos mensajes Uso de ProgressBar geaplanet Controles/Librerías/Componentes 3 Sabado, 03 Diciembre 2011, 00:28 Ver último mensaje
geaplanet
No hay nuevos mensajes Uso De La Instrucción Wait En Raspberry jcanon Aplicaciones/Fragmentos de Código 4 Lunes, 26 Enero 2015, 17:08 Ver último mensaje
jcanon
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron