Power Builder - Hprogressbar

   
Vista:

Hprogressbar

Publicado por pedro (1 intervención) el 18/02/2012 17:06:50
Estoy importando uan gran cantidad de datos formato txt ,que se demora un buen tiempo.

como hago para colocarle un Hprogressbar para ver que porcentaje de datos va importando por medio de un Hprogress
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

Hprogressbar

Publicado por Alejandro (72 intervenciones) el 21/02/2012 03:00:14
Estimado:

Seria más fácil que utilices un archivo *.gif y que le des un tiempo estimado por ti que emule esa acción. Busca en google existen muchas web.

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

Hprogressbar

Publicado por Jeinner Hidalgo jhidalgo@excelteccr.com (638 intervenciones) el 21/02/2012 17:16:53
Es muy simple utilizar el ProgressBar. Este objeto sólo lo pegas en la ventana y utilizas los siguientes comandos:

hsb_1.MaxPosition=Cantidad_de_Registros_a_Exportar // Puedes estimarlo por la cantidad de líneas del archivo de texto.
hsb_1.MinPosition=0
hsb_1.Position(0)

// Para hacer que avance, la barra, haces:
hsb_1.Position(li_Registro) // Donde li_Registro es tu contador de registros.

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

Hprogressbar

Publicado por allison (4 intervenciones) el 26/02/2012 14:54:50
ninguno de estos metodos sirven porque a la hora de importar gran cantidad de datos la pantalla queda estatica, las animaciones de gif se pegan y el progress no se actualiza....
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

Hprogressbar

Publicado por JeinnerH jhidalgo@excelteccr.com (638 intervenciones) el 27/02/2012 17:04:40
Ah...!!! Ok.

Bueno no es que no sirvan, el asunto es que en los procesos pesados, el PB deja de lado los refrescamientos de pantalla, para mejorar el rendimiento. Pero el progressbar sí trabaja, si no tocas la pantalla una vez que se inicia el proceso, verás que la barra se va moviendo, pero si cambias de pantalla en Windows, ahí es donde sucede el problema.

Que opción tienes?

Podrías incluir el comando:
Yield()

Algo como:
Do While
pb_1.Position(li_registro)
Yield()
Loop

Al final del ciclo, esto hace que PB revise la cola de mensajes y haga una pequeña pausa. Es posible que esto te ayude con el refrescamiento, pero también es posible que te atrase el proceso. Tendrías que probar para ver si te sirve.

Otra opción que te permite el Yiel() es la posibilidad de poder salirse del ciclo, si el usuario presiona la tecla Escape, por ejemplo. Tendrías que ponerle el código necesario al ciclo, claro está.

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
Imágen de perfil de antonio

Hprogressbar

Publicado por antonio (1114 intervenciones) el 28/02/2012 01:17:50
Hola Pedro...

Para que el que te puso la instruccion de Position ( li_registro),

Hay , Hay, Hay... si que andamos medio perdidos, mira, lo que debes es trabajar con loe eventos del DW.

1.- Antes de importar debes leer el TXT y determinar el numero de lineas.
2.- Ya leidos sabes cuantos registros van a ser
3.- Al momento de importarlos, en el evento del DW "RetrieveRow", colocas lo siguiente:

Hprogressbar.StepIt()

esto hara que avance tu barra una vez y se repita de igual de veces como el numero de registros que contabilizaste en el punto 1


4- al terminar el import, en el evento del DW "RetrieveEnd", cierras tu ventana donde llamaste tu barra de avance.

Consecuencias:
1.- Tardanza enorme al procesar la informacion solo por mostrar una barra de avance
2.- Carga de memoria ram impresionante
3.- Usuario desesperado y te llamara hasta en la madrugada para despertarte

Solucion:
Te recomiendo que solo aparezca una ventana indicando que esta en proceso y esta ventana abrirla antes de hacer el import o en el evento de "RetrieveStar" y cerrar la ventana en el evento "Retrievend" ya que estos eventos no tienes que llamarlos se disparan en forma automatica.

Espero te sirva esta pequeña ayuda...

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

Hprogressbar

Publicado por JeinnerH jhidalgo@excelteccr.com (638 intervenciones) el 28/02/2012 18:08:14
Hola Antonio, si perdón, es un SetPosition, pero la idea general es esa.

Tomado de la ayuda de Powerbuilder.
Functions for HScrollBar controls
SetPosition Integer Specifies the position of the control in the front-to-back order of the window.

Lo que no encuentro es el StepIt() en la ayuda de PB6.5, a cuál versión te refieres?

Muchas gracias por tu observación.

Y difiero con tu solucion, de no mostrar la barra de progreso, me parece válido que se muestre por lo menos el porcentaje de avance, ya que como sabrás el PB deja de refrescar la pantalla y parece que el programa quedó colgado. Algunos usuarios no esperan y prefieren matar el proceso, lo que puede producir problemas.

El tiempo de espera seguramente aumentará, como ya lo había comentado antes, pero es un mal necesario.

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

Hprogressbar

Publicado por JeinnerH jhidalgo@excelteccr.com (638 intervenciones) el 28/02/2012 18:20:03
Perdón, estoy confundido con el Scrollbar y el ProgressBar.

Para el uso del Progressbar, utilizando los PFC's el avence se realiza con of_SetPosition()

Gracias.
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
Imágen de perfil de antonio

Hprogressbar

Publicado por antonio (1114 intervenciones) el 29/02/2012 15:50:49
Hola JeinnerH:

Mira, yo utilizo la version 11.5 y ahi existe la opcion de StepIt(), en la 6.5 no creo que exista ya que estamos hablando de versiones super diferentes.

Ahora bien, estoy contigo en cuanto a mostrar la barra de avance, pero recuerda, cuando los sistemas requieren hacer procesos de carga masivos, y si el usuario mata el proceso con el administrador de tareas, bueno, ya es responsabilidad de ellos, nosotros solo cumplimos con darle las herramientas necesarias, pero si el usuario tira las herramientas no hay nada que hacer.

Lo importante de parte de nosotros es crearles sistemas lo mejor posible en carga masiva de registros.
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