Sumar columna de Datagridview en Visual Basic Net


Hola amigos..esta es otra entrega que tal vez les sera útiles en momentos que estén desarrollando una aplicación   de tal manera que algunas veces necesitamos sumar columnas numéricas del datagridview y sobre todo presentarlas al final  del mismo.
Entonces para ello mostremos una grilla llena de cantidades numéricas que se desea sumar y al final quede así:

Recuerda que debes poner en las propiedades del control datagridview {AllowUserToAddRows=False}para evitar que el control agregue automáticamente filas
Al final el código sobre el botón:

Private Sub Btnsumar_Click(sender As System.Object, e As System.EventArgs) Handles Btnsumar.Click

Try
Dim n As Integer = 4 ' numero contador
Dim cantidad(n) As Integer 'matriz para almacenar hasta n valores
Dim valor As Double = 0.18 'valor de un articulo en común
Dim subtotal(n) As Double ' matriz que almacena los subtotales de cada compra
Dim suma As Double 'almacena el total de la suma de la columna subtotal
For i As Integer = 0 To n - 1
   cantidad(i) = Val(InputBox("Ingresar cantidad Nº" & i + 1))

Next

For i As Integer = 0 To n - 1
subtotal(i) = cantidad(i) * valor
suma = suma + subtotal(i)
Next
grid1.Rows.Add(n + 1) 'numero de filas del grid
For r As Integer = 0 To n - 1
grid1.Item(0, r).Value = r + 1
grid1.Item(1, r).Value = Format(cantidad(r), "0.00")
grid1.Item(2, r).Value = Format(valor, "0.00")
grid1.Item(3, r).Value = Format(subtotal(r), "0.00")
grid1.Item(2, n).Value = "TOTALES="
grid1.Item(3, n).Value = Format(suma, "0.00")
Next
Catch ex As KeyNotFoundException
MessageBox.Show("Error de concurrencia:" & vbCrLf & ex.Message)
End Try
End Sub
Bueno cuídense y si no les resulta... espero sus preguntas!

Comentarios

  1. yo lo que necesito es que me multiplique la columna de cantidad por el precio unitario y lo muestre en la columna total solo eso como seria el codigo Systemdiaz2011@hotmail.com

    ResponderEliminar
  2. Que tal, si bien entiendo tu me pides que presente en el subtotal, el producto de la cantidad pedida por el precio unitario, si puedes ver bien la imagen de la entrada(tema) puedes darte cuenta que en el subtotal, se aplica el calculo que tu quieres con la unica implicacion que se genera automaticamente pero tu le puedes hacer para que varie los precios o valores unitario y haga el calculo solo es cuestion de usar matrices(arrays) y nada mas. Es el centro de la operacion que tu me pides

    For i As Integer = 0 To n - 1
    subtotal(i) = cantidad(i) * valor'producto
    suma = suma + subtotal(i)'subtotal
    Next
    Gracias amigo a tu pregunta voy a realizar una entrada nueva que implique este calculo mas complejo aplicado a datagridview totalmente editable. Estaras atento a los nuevos temas (haces click en el menu de la cabecera "lo ultimo")

    ResponderEliminar
  3. como calculco el promedio de 4 notas en un datagrid quiero que me muestra en promedio en la quinta calumna del datagrid de cada nota

    ResponderEliminar
  4. Hola amigo que tal si miras esta entrada-ejemplo que realice gracias a tu pregunta busca en el blog o en google : "Sumar y promediar en filas de un DatagridView"

    ResponderEliminar
  5. Error 1 'grid1' no está declarado. Puede que esté inaccesible debido a su nivel de protección.

    amigo soy muy novato en esto y si me gustaria una ayuda muy puntual si quiere me manda el codigo funcionando para una bd con tabla (access) de producto y con imagenes de cada producto.

    por lo pronto ayude con este error

    ResponderEliminar
  6. Hola amigo que tal y disculpen todos, me hiciste dar cuenta que no he puesto mi ejem a descargar, bueno viendo estovoy a modificar la pagina, asi que pueden actualizar la misma para ver los cambios

    ResponderEliminar
    Respuestas
    1. Dando respuesta a tu pregunta grid1 es el nombre personalizado por mi, del control. Normalmente al no poner un nombre personalizado su nombre por defecto al Datagridview1

      Eliminar
  7. Buenas tardes compañero navegando me encontre con esta pagina actualiza, y con ejemplos muy buenos.

    me preguntaba si existe la posibilidad que nos puedas colaborar con un ejemplo que muestre como sumar, promediar 3 columnas de un datagridview y el resultado lo muestre automaticamente al pie del datagridview si no es mucha molestia.

    Saludos,

    Carlos

    ResponderEliminar
    Respuestas
    1. Hola que tal justamente estaba en linea y recibi tu peticion voy a ver como te ayudo, primero quiero que me expliques quieres que te muestre la suma, el promedio o ambos?

      Eliminar
  8. Ambos porfavor

    Gracias muchas gracias

    Saludos,

    ResponderEliminar
    Respuestas
    1. disculpa que sea tan meticuloso pero como quieres los promedios al final de cada columna?

      Eliminar
  9. Si porfavor ya que de alli lo pasare a otro datagridview.

    Saludos,

    ResponderEliminar
    Respuestas
    1. teniendo inconvenientes pero espero poder publicar el ejemplo en mension

      Eliminar
  10. quiero saber si el total de la grilla puede aparecer al final de los datos independientemente que se agreguen campos a la grilla o es para un numero de campos definidos, ejemp en la fila 4 aparecen los totales y si agrego campos me generara error

    ResponderEliminar
  11. hola puedes hacer de muchas maneras lo importante es que te lo propongas, yo tengo otro proyecto donde me agrega los promedios y el resultado al final independiente de las filas que les agregues pueden ser 100 o 1000

    ResponderEliminar
  12. Gracias, entonces ese codigo me sirve para mi proyecto, ya que en la grilla le estoy agragando datos a diario, lo unico que me confunde es que en su codigo pone un numero 4 que es la posicion del total, en mi caso la posicion del total sera cambiante de acuerdo le vaya agregando datos.....me funciona siempre...???

    Gracias y Saludos....Jose Giron (Honduras)

    ResponderEliminar
  13. Se me escapo comentar estoy buscando sobre reportviewer o Crystal reports siempre en visual 2010 y bases de datos en Access....sera que usted me ayuda con informacion....Saludos nuevamente Jose Giron

    ResponderEliminar
  14. Lamentablemente no incluye ahora cristal reports en Visual studio, en ese caso te quedo debiendo ya que muy poco maneje reportes,y en cuanto a los de la primera pregunta para ubicar el resultado al final de tabla puedes agregar

    dim i as integer= datagrid.rows.cont-1
    con esto hallas la ultima posicion de la fila y puedes asignarle el total a esa fila
    ejm
    gris.item(columa,i).value = total

    ResponderEliminar
  15. hola buen día colega quiero pedir un favor que me dijera una manera de restar que al momento de dar click en un listtbooxque me quite la seleccion y que me reste al mismo tiempo en textboox

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

DevComponents DotnetBar 12.5.0.2

Imprimir directamente ReportViewer a impresora predeterminada