Siguiendo la consulta de Jesús Pérez, preguntando como totalizar la suma de una columna de un DataGridView, poniendo como ejemplo recorrer las filas de una columna y efectuar las operaciones que consideremos oportunas.
Aquí tenéis el enlace para resolverlo según MSDN:
http://msdn.microsoft.com/es-es/library/system.data.datatable.compute.aspx
' Computar la suma de la columna 'Capital' Dim total As Object = dt.Compute("SUM(Capital)", Nothing) ' visualizar el resultado en la barra Me.Text = total.ToString
Si por el contrario optamos por hacerlo recorriendo las filas de la Columna… (tal i como me habéis solicitado) el código seria algo similar al siguiente :
... Load() 'Disparar el calculo cada vez que editamos AddHandler Me.dataGridView1.CellEndEdit, AddressOf Sumar 'Calcular totalizando la columna 3 "Salario" Me.dataGridView1.Columns(3).HeaderText = "Sueldo" Me.dataGridView1.AllowUserToAddRows = False Me.dataGridView1.CurrentCell = dataGridView1.Rows(0).Cells(3) Sumar() ... End Sub
' ' Sumar las cantidades de una columna ' Private Columna As Integer = 3 Sub Sumar() Dim Total As Integer = 0 'Acumular el total Dim UltimaFila As Integer = Me.dataGridView1.Rows.Count 'Solo calculamos si modificamos la columna If Me.dataGridView1.CurrentCell.ColumnIndex = Columna Then For Each row As DataGridViewRow In Me.dataGridView1.Rows If row.Index < UltimaFila - 1 Then Total += row.Cells(Columna).Value Next Me.dataGridView1.Rows(UltimaFila - 1).Cells(3).Value = Total.ToString End If End Sub
Pd. No dudeis en pedirme el proyecto completo si estais interesados, o si quereis comentar alguna parte del codigo.
Amigo primero dejame felicitarte por tu blog es muy bueno no se si me puedes ayudar con el codigo de este ejemplo me interesa verlo mas a detalle, saludos
Me da error en la parte de “AddressOf Sumar” me dice que el metodo no tiene la misma firma que el delegado, me podrian ayudar, gracias.
Hola Raul,
Supongo que no estas utilizando VB9, pues este dispone de lo que llamamos “delegados relajados”, esto permite llamar a las funciones sin las acostumbradas ‘firmas’…
Sub Loquesea(e as object, sender as system…)
Lo que te esta indicando el error, es que necesitas proveer los parametros que sean necesarios… a saber si VB8 :
Private Sub MiFuncion(ByVal e As Object, ByVal sender As DataGridViewCellEventArgs)
Saludos,
Pep Lluis,
Hola Fernando!
Gracias por tus amables palabras… dime como puedo ayudarte, que parte te interesa detallar?
Espero tus noticias,
Pep Lluis,
Saludos.
Mi preguntan es en que parte se coloca esta porcion de codigo
.. Handles Me.Load
‘Disparar el calculo cada vez que editamos
AddHandler Me.dataGridView1.CellEndEdit, AddressOf Sumar
‘Calcular el contenido inicial de la columna
Me.dataGridView1.Columns(3).HeaderText = “Salario”
Me.dataGridView1.AllowUserToAddRows = False
Me.dataGridView1.CurrentCell = dataGridView1.Rows(0).Cells(3)
Sumar()
..
End Sub
Hola Jartiem,
El evento hace referencia al Form.Load en este caso, aunque puedes añadir el AddHandler en cualquier funcion de inicializacion.
Saludos,
Pep Lluis,
Amigo muy bueno tu ejemplo no se si me puedes ayudar con el codigo completo a fsigu, en hotmail.
Muchas gracias
Muy interesante, pero.
Como conseguir el resultado del saldo en una tercera columna en un DataGridView
Ejemplo 1ª ingreso 2ªPago 3ºSaldo
1ª ingreso 500 2ªPago 100 3ºSaldo = 400
1ª ingreso 600 2ªPago 200 3ºSaldo = 800
1ª ingreso 0 2ªPago 600 3ºSaldo = 200
Espero haberme explicado
Agradecería me ayudaran ya que llevo unos días dándole vueltas sin ningún resultado
Muchas gracias.
José
Saludos, par aun columna adicional, solo has la opercion a nivel de query por sql
Me puedes mandar el codigo completo…..
Por favor
Disculpa Stell,
Que version de visual Studio estas utilizando?
Espero tus noticias,
Pep Lluis,
hola amigos, me pueden mandar el codigo, esta bueno esto, solo me falta totalizar la columna importe…
mandarlo a
kunecol@gmail.com
Gracias… saludes…
Hola amigos me pueden regalar el codigo, solo me falta totalizar la celda Importe.
Podeis mandarlo a:
kunekol@gmail.com
Mil Gracias… Saludes
oye men por favor enviame el codigo al mail hacker_rd@hotmail.com
Hola
Espocible frizar la ultima fila de un DGV???
me gustaria saver, seria muy util.
bay
Fausto
ME PODRIAS AYUDAR, SI ES QUE YO QUIERO IMPRIMIR EL TOTAL EN UN TEXTBOX, FUERA DEL GRID…
POR FAVOR… GRACIAS.
ME PODRIAS AYUDAR, SI ES QUE YO QUIERO IMPRIMIR EL TOTAL EN UN TEXTBOX, FUERA DEL GRID…
POR FAVOR… GRACIAS.
Amigo, muy bueno el ejemplo, quisiera que me ayudes con el codigo completo ya que quisiera ampliar mis conocimientos en lo de los datagrids,te agradeceré por la ayuda
Hola Eduardo,
Solo tienes que insertar ese codigo o utilizar la idea que muestra, dentro de tu proyecto y en tu estructura de datos… pues seguro que no coincide con la mostrada.
En todo caso si tienes dudas, puedes contactarme a traves de [Contact] y avanzamos sobre lo que necesitas.
Saludos,
Pep Lluis,
Hola, como puedo hacer la suma de una columna de un datagridview, tengo las columnas concepto y precio, la suma seria de la columna precio, calcular el subtotal, el iva y el total pero aparte que me lo pudiera imprimir el datagridview. Mi correo es adnum_1@hotmail.com, gracias.
Ola brother…!! mas que un comentario tengo una ENORME DUDA!!
Estoy trabajando con VisualStudio 2008. (espero que puedas ayudarme…!)
pero…
Como puedo llenar un DataGridView con datos traidos desde un PictureBox?
por ejemplo: este Data.. Tiene como campos “Id, producto, precio, cantidad y total” y quiero que todos esos campos se llenen al momento que le de un “clic” a una Imagen “X”…
Lo curioso es que ya lo intente y SI toma los valores, la operacion lo hace con la ayuda de un “InputBox” pero… Todos los datos me los deja en la misma FILA… Todos y cada uno de los que quiera Ingresar!
Esta es mi GRAN DUDA…!! Podrias ayudarme?
ELEASTAD_1@hotmail.com
Te dejo mi correo por si quieres que te mande algun tipo de pantallas o codigo, zaz?
De anteMano… GRacias!!
Ola brother…!! mas que un comentario tengo una ENORME DUDA!!
Estoy trabajando con VisualStudio 2008. (espero que puedas ayudarme…!)
pero…
Como puedo llenar un DataGridView con datos traidos desde un PictureBox?
por ejemplo: este Data.. Tiene como campos “Id, producto, precio, cantidad y total” y quiero que todos esos campos se llenen al momento que le de un “clic” a una Imagen “X”…
Lo curioso es que ya lo intente y SI toma los valores, la operacion lo hace con la ayuda de un “InputBox” pero… Todos los datos me los deja en la misma FILA… Todos y cada uno de los que quiera Ingresar!
Esta es mi GRAN DUDA…!! Podrias ayudarme?
ELEASTAD_1@hotmail.com
Te dejo mi correo por si quieres que te mande algun tipo de pantallas o codigo, zaz?
De anteMano… GRacias!!
Ola brother…!! mas que un comentario tengo una ENORME DUDA!!
Estoy trabajando con VisualStudio 2008. (espero que puedas ayudarme…!)
pero…
Como puedo llenar un DataGridView con datos traidos desde un PictureBox?
por ejemplo: este Data.. Tiene como campos “Id, producto, precio, cantidad y total” y quiero que todos esos campos se llenen al momento que le de un “clic” a una Imagen “X”…
Lo curioso es que ya lo intente y SI toma los valores, la operacion lo hace con la ayuda de un “InputBox” pero… Todos los datos me los deja en la misma FILA… Todos y cada uno de los que quiera Ingresar!
Esta es mi GRAN DUDA…!! Podrias ayudarme?
ELEASTAD_1@hotmail.com
Te dejo mi correo por si quieres que te mande algun tipo de pantallas o codigo, zaz?
De anteMano… GRacias!!
est muy interesante el codigo, puede pasarte el ejecutable
muy buen ejemplo gracias por tu ayuda, ahora estoy buscando codigo para sumar columnas de un datagridview, pero que me lo guarde en una base de datos ya que los datos que me muestran los hice en acces. gracias espero tu respuesta y gracias porque tus ejemplos me an servido mucho
HOLA AMIGO, LA VERDAD LA SUMA DE DATAGRID ES MUY IMPORTANTE Y OS DOY LA GRACIAS POR COLGAR BUESTRO EJEMPLO, PERO, HAY CIERTAS DUDAS QUE NO LOGRO ENTENDER, Y UNA DE ELLAS, ES COMO LOGRAR APARECER EN LA ULTIMA FILA EL IMPORTE DE TOTALES.
OTRA DUDA ES CUANDO TENGO CANTIDADES CON DECIMALES EN EL DATAGRID, ESTE ME SACA UNA SUMA CON ENTEROS, YA HE PROBADO DE TODO, PERO AL EJECUTAR, NO ME SACA NADA, YO QUIERO QUE LA SUMA DE LOS VALORES DEL DATAGRID ME SALGAN EN DECIMALES.
PUES ESPERO BUESTRAS RESPUESTAS
OS AGRADEZCO mucho
Hola Alfred,
Podrias dirigirte a los foros para formular tu pregunta o contactarme directamente?
A traves del blog se hace casi imposible establecer una conversacion.
Saludos,
Pep Lluis,
Hey tengo una pregunta. Estoy teniendo problemas con el dt me da error y ademas quiero que el total aparezca en un textbox.
necesito urgente como comparar datos de las celdas de una columna de un datagridview, y me arroje el mayor valor en un textbox.. los datos han sido ingresados sin ninguna conexion a una bse de datos ..
Me gustaria saber si me podrias mandar el programa con codigo a mi correO talos986@hotmail.com
podrias poner el link de descarga del codigo si no fuese mucha molestia.
De antemano gracias,
Saludos
Me interesa bastante este codigo, estoy trabajando una aplicaciones en la cual necesito hacer precisamente esto, pero en vb.net ~ he escrito lo mismo pero solo me bota errores de index que no corresponde. Si podrias proporcionar el codigo completo seria genial.
Saludos,
Hola Alex,
Todo el codigo que necesitas esta posteado en el mismo articulo. Solo debes crear un nuevo proyecto de Visual Studio y copiar cada segmento en su ubicacion… Load, etc.
Si aun y asi continuas sin poder rodar el codigo, por favor avisame.
PepLluis,
Hola me gustaria insertar datos en una factura y que a su vez agregue los datos en un datagridview, ademas necesito que actualice al guardar pues no he podido hacerlo
Tengo una tabla llamada “Tbl_RegistroHoras” la cual contiene el “Id” de la actividad y varios campos llamados “1”, “2”, “3”…”31″, que representan los dias del mes y al final tengo otro campo llamado “Total”. La idea es que en el DataGridView, el usuario pueda modificar los datos del DataGridView, que representaran horas que el usuario invirtio en una actividad. A este DataGridView necesito colocarle una fila de total (Mostrara el total de la Suma por Columnas) y una columna de tota (Mostrara la suma por fila de toda las columnas de días).
Estoy usando =(Me.DataGridView1.DataSource = Me.BindingSource1) para enlazar el DataGrid con el ‘bindingsource.
Para actualizar los datos uso un botón = Me.AdaptadorDeDatos.Update(CType(Me.BindingSource1.DataSource, DataTable))
Estube tratando de realizar la suma (La que se mostraria como columna y sumaria las filas de las columnas) de la siguiente forma:
If e.ColumnIndex >= 4 Or e.ColumnIndex < 35 Then Me.DataGridView1.Columns.Item(35).Selected = True Dim Resultado As Double = Val(Me.DataGridView1.Rows(e.RowIndex).Cells(4).Value) + Val(Me.DataGridView1.Rows(e.RowIndex).Cells(5).Value) Me.DataGridView1.Rows(e.RowIndex).Cells(35).Value = Resultado.ToString End If El Meollo: cuando intento sumar un valor de una celda cambiada con otro que aun no tiene valor me da error. Intente cambiar Val(...) por CType(...) y por CInt(...) pero me proboca error al actualizar. Espero su colaboración con este problema... de antemano gracias!
Redondeo a 2 decimales en una columna
DataGridView1.Columns(3).DefaultCellStyle.Format = “C2” ‘aca indica q redondeara a dos decimales
Y como lo hago en Visual Estudio 2010 en C#???
Gracias muy amable
Por favor si pudieras ayudarme
1.- Como puedo eliminar una fila en DataGridView
2.- Como programo el boton eliminar en un DataGridView en memoria
3.- Comp programo la impresion de la factura
Hola necesito ayuda estoy tratando de hacer una aplicacion parecida a excel con un datagridview la propiedad selectionMode la tengo en CellSelect. lo que quiero saber es como sumar los valores que estan en las celdas seleccionadas y mostrar la suma en el mismo datagridview
Hola q tal amigo, estoy haciendo un programa para facturacion, y quiero saber como puedo hacer para sumar por separado los siguentes valores.
1. Solo los valores que tienen Iva 12%
2. Solo los valores que tienen Iva 0%
Estoy utilizando una base de datos y un datagrid.
Espero que me puedan ayudar gracias.