Autor
|
Tema: Progress bar reutilizable (Leído 5,513 veces)
|
emmanuelgc17
Desconectado
Mensajes: 2
|
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ㅤ
Conectado
Mensajes: 1.843
🔵🔵🔵🔵🔵🔵🔵
|
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
Mensajes: 2
|
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
|
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
Mensajes: 28
|
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
Mensajes: 49
|
¡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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Progress Bar
Programación Visual Basic
|
juanjoxx
|
2
|
2,163
|
1 Abril 2006, 23:35 pm
por [VolkS]
|
|
|
Progress Bar ........... No me entero.
Programación Visual Basic
|
el_trocha
|
1
|
1,719
|
17 Septiembre 2007, 19:53 pm
por LeandroA
|
|
|
Progress Bar o Gif animado
Java
|
Alon3
|
2
|
4,464
|
12 Noviembre 2011, 07:29 am
por 1mpuls0
|
|
|
progress bar
Desarrollo Web
|
fdap91
|
2
|
1,993
|
23 Octubre 2014, 17:55 pm
por fdap91
|
|
|
Progress y ProgressBar
.NET (C#, VB.NET, ASP)
|
rigorvzla
|
2
|
2,580
|
9 Octubre 2020, 22:51 pm
por rigorvzla
|
|