none
Sumar celdas de Datagrid según Condicion RRS feed

  • Pregunta

  • Buenos días Foreros 

    acá solicitando del conocimiento de ustedes les comento: tengo un DataGridView el cual tiene 2 columnas una Material y otra Metros osea la "cantidad"

    lo que necesito es que sume todo lo de un criterio...así con todo los demás criterios de la columna acá una imagen de los que deseo 

    dicen que una imagen vale mas que mil palabras, espero alguna ayuda para poder seguir avanzando con mi proyecto

    no posteo fuente ya que no e encontrado código que me sirva hasta el momento 

     

    martes, 20 de octubre de 2020 17:34

Todas las respuestas

  • Hola:
    ¿Como cargas el DataGridView?
    Si lo cargas con una consulta a una base de datos, tienes que hacer una consulta agrupando por el campo material

    Si lo cargas "manualmente" con un datatable, tienes que hacer una consulta linq, agrupando por el campo material

    Public Class Form3
        Private moDataTable As New DataTable

        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.DataGridView1.AllowUserToAddRows = False
            'Añadimos las columnas.
            moDataTable.Columns.Add(New DataColumn("material", Type.GetType("System.String")))
            moDataTable.Columns.Add(New DataColumn("metros", Type.GetType("System.Int32")))
            'Carga de datos
            Dim lDataRow As DataRow = moDataTable.NewRow
            ' Añadimos los datos
            lDataRow.Item("material") = "T.T."
            lDataRow.Item("metros") = 1411
            ' Agregamos el registros a la colección Rows
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "T.T."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "T.D."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "T.D."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "T.D."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "S.G."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "S.G."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "S.G."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            lDataRow = moDataTable.NewRow
            lDataRow.Item("material") = "S.G."
            lDataRow.Item("metros") = 1411
            moDataTable.Rows.Add(lDataRow)
            '
            Me.DataGridView1.DataSource = moDataTable
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Try
                Dim consulta = (From filas In moDataTable.AsEnumerable Group filas By material = filas.Field(Of String)("material") Into g = Group Select New With {Key material, .metros = g.Sum(Function(r) r.Field(Of Integer)("metros"))}).OrderBy(Function(tkey) tkey.material).ToList()
                DataGridView2.DataSource = consulta
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos

    miércoles, 21 de octubre de 2020 9:41
  • buenas tardes carlos, si lo hago atravez de una base de datos de access 

           

      Private Sub Plannig_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            Me.Ordenes_de_ventasTableAdapter.Fill(Me.Ordenes_de_VentasDataSet.Ordenes_de_ventas)

        End Sub

     muchos me a indicado que todas estas sentencias se pueden hacer desde la tabla...soy un Poco Nuevo en el campo de la programación 

    jueves, 22 de octubre de 2020 1:51
  • hola carlos hice el ejemplo en un sistema nuevo, si sirve todo lo que indicas, como lo puedo aplicar al mio?

    sigo varado :(

     
    viernes, 23 de octubre de 2020 3:47