none
PROGRESSBAR CON PROCESO DE SQL

    Pregunta

  • Hola, tengo una duda

    Estoy realizando un insert a una base de datos en linea, en este insert coniverto varios documentos pdf a hex para poder insertarlos a la base de datos, este proceso tarda al rededor de 5 a 10 segundos... necesito implementar un progressbar que mida el tiempo real del proceso  y lo muestre obviamente para que el usuario no se desespere. gracias!

    martes, 27 de diciembre de 2016 17:29

Respuestas

  • Entiendo que los 5 a 10 segundos se pierden en la conversión del array de bytes del archivo hacia el valor hex para insertarlo. Como primer paso, yo te recomendaría que suprimieses esa conversión, y en su lugar parametrizases la sentencia de inserción y le entregases el pdf en binario en lugar de en hexadecimal. Con esto el proceso será prácticamente instantáneo, realizándose la conversión en unas milésimas de segundo en lugar de tardar 5 a 10 segundos.

    Pero en fin, si de todas formas prefieres hacer la conversión, examina el bucle que tendrás escrito para realizarla y fíjate que hará un determinado número de iteraciones (posiblemente tantas como bytes haya en el archivo). Dentro del bucle, toma el índice (la posición del byte que se está convirtiendo) y divídelo por el total de bytes y multiplica por 100. Esto te da el porcentaje de progreso que llevas avanzado, y es el valor que le tienes que poner a la barra de progreso. Para que no sea muy lento, no hagas esto en todas las iteraciones sino (por ejemplo) cada 100 iteraciones. Si esto es un una aplicación de tipo Winforms, ejecuta también Application.DoEvents para liberar el control y permitir que la barra se actualice en pantalla.


    martes, 27 de diciembre de 2016 17:54