elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Progress bar reutilizable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Progress bar reutilizable  (Leído 2,893 veces)
emmanuelgc17

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Progress bar reutilizable
« en: 24 Enero 2024, 04:44 am »

Tengo una solución en C Sharp con 4 capas o proyectos (Datos, Entidades, Negocio y Presentación). Las primeras tres son proyectos de Biblioteca de Clases y la ultima es de Windows Forms.

En el poyecto presentacion tengo un formulario donde el usuario puede elegir un archivo de excel y se muestra en un datagrid y el usuario selecciona que registros desea importar. Despues de seleccionar, solo da clic a un boton para iniciar la importacion.

Dentro de ese botón accedo a la capa negocios y desde la capa negocios accedo a la capa de datos donde hago toda la tarea de importacion con las siguientes acciones:

Paso 1. Me conecto a la base de datos
Paso 2. Recorro el datagrid a traves de un foreach y aqui ejecuto las sentencias SQL para insertar cada registro
Paso 3. Cierro la conexion.

Mi necesidad es que al estar insertando los registros en el formulario se muestre el progreso de la insercion o edicion de los registros

Se puede hacer esto y se puede podrán pasarme el codigo que debo poner?

Muchas gracias, espero me haya explicado. 


En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.681


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Progress bar reutilizable
« Respuesta #1 en: 24 Enero 2024, 15:33 pm »

Hola, ésto como lo estás haciendo es un error:

Paso 2. Recorro el datagrid a traves de un foreach y aqui ejecuto las sentencias SQL para insertar cada registro

porque con cada dato que estés ingresando en el datagrid estás haciendo una consulta/query a la base de datos, lo cuál es una sobrecarga innecesaria y excesiva, en estos casos lo correcto y recomendable es primero hacer una sola consulta a la base de datos y guardar todos los datos en una variable luego ahí si hacer el foreach para ir añadiendo todos los datos al datagrid.

En cuánto a la barra de progreso claro que es posible hacerla y no es difícil, tenés que contar todos los elementos que vas a ingresar al datagrid y con ese total (rango) podes crear la barra para indicarle a tu programa cuál será el final del progreso, por ultimo cuándo hagas el foreach en tu datagrid para agregar los datos ahí vas sumando un valor (set value) a la barra por cada iteración.


Saludos


« Última modificación: 24 Enero 2024, 15:38 pm por Danielㅤ » En línea

emmanuelgc17

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Progress bar reutilizable
« Respuesta #2 en: 29 Enero 2024, 23:26 pm »

Buenas tardes.

Una disculpa que no haya respondido antes.

Podras pasarme el codigo de como se hace lo del progres bar en el proyecto de biblioteca de clases (osea en la capa de datos) y que al mismo tiempo el usuario lo vea en la capa presentacion (en el formulario).

Te lo agradeceria mucho.

Gracias.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.357


Ver Perfil
Re: Progress bar reutilizable
« Respuesta #3 en: 6 Febrero 2024, 15:44 pm »

Podras pasarme el codigo de como se hace lo del progres bar en el proyecto de biblioteca de clases (osea en la capa de datos) y que al mismo tiempo el usuario lo vea en la capa presentacion (en el formulario).

Te lo agradeceria mucho.
Es un poco irrelevante poner código. Una explicación para algo tan sencillo es más que suficiente...

En la biblioteca, simplemente añades una clase que ampare 3 propiedades (Max, Min y Value), un evento ('ValueChanged(valor)') y un método 'Reset (max, valor=-1, min=0)

Cuando vayas a usarlo, invocas el método 'Reset, para pasar el valor máximo del progressBar, el mínimo (por defecto 0) y el valor inicial (-1 indicaría que tome el valor mínimo sea éste cual sea).
Después mientras actúa, simplemente vas cambiando el valor (si el incremento es siempre unitario, puede remplazar la propiedad 'set Valor' por un método 'increment()' que simplemente sume uno al valor actual: _Valor +=1
...y acto seguido dispare el evento ValueChanged, evento al que está suscrito la interfaz y que modifica el valor de progresbar1.value = valor

Quizás fuere conveniento otro evento de 'finalizado(max)', que sucedería cuando valor = max, es decir en esta condición dispararía 'finalizado' en vez de 'valuechanged', en el código de la interfaz se haría: progressbar1.value = max, y ahí (tras ese código en el evento recibido), haces otras cosas que sean las naturales al término de la tarea.
« Última modificación: 6 Febrero 2024, 15:50 pm por Serapis » En línea

elektrostudios2

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Progress bar reutilizable
« Respuesta #4 en: 21 Febrero 2024, 06:19 am »

Es un poco irrelevante poner código. Una explicación para algo tan sencillo es más que suficiente...

En la biblioteca, simplemente añades una clase que ampare 3 propiedades (Max, Min y Value), un evento ('ValueChanged(valor)') y un método 'Reset (max, valor=-1, min=0)

Cuando vayas a usarlo, invocas el método 'Reset, para pasar el valor máximo del progressBar, el mínimo (por defecto 0) y el valor inicial (-1 indicaría que tome el valor mínimo sea éste cual sea).
Después mientras actúa, simplemente vas cambiando el valor (si el incremento es siempre unitario, puede remplazar la propiedad 'set Valor' por un método 'increment()' que simplemente sume uno al valor actual: _Valor +=1
...y acto seguido dispare el evento ValueChanged, evento al que está suscrito la interfaz y que modifica el valor de progresbar1.value = valor

Quizás fuere conveniento otro evento de 'finalizado(max)', que sucedería cuando valor = max, es decir en esta condición dispararía 'finalizado' en vez de 'valuechanged', en el código de la interfaz se haría: progressbar1.value = max, y ahí (tras ese código en el evento recibido), haces otras cosas que sean las naturales al término de la tarea.

@emmanuelgc17: Atendiendo de forma superficial a tu petición de "¿Podéis mostrarme un código?", permíteme decirte que si le entregas esas brillantes instrucciones de @Serapis a ChatGPT, y junto al generoso comentario de @Daniel, estoy convencido de que ChatGPT será capaz de elaborar un código que te permita hacerte mejor idea y adaptarlo a tu entorno.

La implementación de una barra de progreso reutilizable no supone un problema, pero el requisito de que la implementación (el código) se adapte especificamente a tu escenario / aplicación puede resultar tedioso y dar lugar a complicaciones, factores que no se toman en cuenta y posibles mal entendidos. En estos casos yo optaría por probar con ChatGPT, o proporcionarnos una muestra  clara y concisa del código relevante que estás utilizando.
 
Aténtamente,
Elektro.
« Última modificación: 21 Febrero 2024, 06:26 am por elektrostudios2 » En línea

   
Parado_larga_duracion_ESP

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Progress bar reutilizable
« Respuesta #5 en: 21 Febrero 2024, 08:25 am »

¡Ajá, ChatGPT!  :¬¬ Si no tuviera límites, se podrían hacer programas más extensos de 1 prompt.

Razón suficiente para dejar de programar y violar a los CEOs de las grandes tecnológicas hasta que lo suelten.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Progress Bar
Programación Visual Basic
juanjoxx 2 1,959 Último mensaje 1 Abril 2006, 23:35 pm
por [VolkS]
Progress Bar ........... No me entero.
Programación Visual Basic
el_trocha 1 1,573 Último mensaje 17 Septiembre 2007, 19:53 pm
por LeandroA
Progress Bar o Gif animado
Java
Alon3 2 4,243 Último mensaje 12 Noviembre 2011, 07:29 am
por 1mpuls0
progress bar
Desarrollo Web
fdap91 2 1,743 Último mensaje 23 Octubre 2014, 17:55 pm
por fdap91
Progress y ProgressBar
.NET (C#, VB.NET, ASP)
rigorvzla 2 2,347 Último mensaje 9 Octubre 2020, 22:51 pm
por rigorvzla
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines