none
Sumar valores de columna RRS feed

  • Pregunta

  • Hola a todos

    traigo la siguiente consulta ante uds, estoy realizando la suma en una columna llamada precio unitario para mostrar el total acumulado en un label, el problema es que solo se ejecuta una vez, cuando los datos cambian no genera la suma nuevamente que debo hacer para que este cambie cada vez que se generen cambios en el registro?? anexo el codigo 

    Private Sub dataListado_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dataListado.CellValueChanged
            Dim resultado As Decimal = 0D
    
            For Each row As DataGridViewRow In dataListado.Rows
    
                ' Obtenemos el valor de la celda.
                
                Dim value As Object = row.Cells("precio_unitario").Value
    
                Dim d As Decimal
    
                Dim bln As Boolean = Decimal.TryParse(Convert.ToString(value), d)
    
                ' Si el valor alfanumérico no se puede convertir a número,
                ' continuamos el bucle.
                
                If (Not bln) Then Continue For
    
                ' Sumamos el valor.
                
                resultado += Convert.ToDecimal(d)
    
            Next
    
            lblTotal.Text = String.Format("{0:N2}", resultado)
        End Sub

    El codigo se encuentra en un cellValueChanged y los datos que se cargar en dataListado se llaman desde otro fromulario

    De antemano gracias por su ayuda

    Saludos





    • Editado mathew5402 miércoles, 18 de marzo de 2015 22:34
    • Cambiado Enrique M. Montejo domingo, 22 de marzo de 2015 6:07 Pregunta relacionada con controles de Windows Forms.
    miércoles, 18 de marzo de 2015 22:20

Todas las respuestas

  • Public Sub sumar_columnas_Datagridview() 'Metodo de suma los valores del datagridview
            Try
                Dim total As Decimal = 0
                Dim porivu As Decimal = 0
                Dim iTotal As Integer = Me.DatagridArticulos.Rows.Count 'ITotal toma el valor del numero de registros k tiene latabla
                Dim jTotal As Integer = Me.Datagridview1.Rows.Count
                Dim i As Integer 'Definimos la variable i para controlar el ciclo for
                Dim j As Integer ' Definimos la variable j para controlar el ciclo for
                For i = 0 To iTotal - 1 'Definimos del ciclo que va desde que i vale cero hasta que i valga itotal menos uno, osea el penultimo regsitro de la tabla
                    total = total + Decimal.Parse(Me.DatagridArticulos(3, i).Value)
                    total = total + Decimal.Parse(Me.DatagridArticulos(4, i).Value)
                Next
                txtresultado.Text = String.Format("{0:N2}", total) 'Mostramos el porivu en el label1
            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)
            End Try
            txtcodigoBarra.Focus()
        End Sub
    Yo hago algo muy parecido a esto en un proyecto pero en vez de un dato calculo dos y utilizo un boton para hacer el calculo, mira el codigo analizado a ver si te funciona asi, a mi me funciona de maravillas

    jueves, 19 de marzo de 2015 1:14
  • Doy por hecho que hablamos de un control DataGridView.

    ¿Cómo cargas los datos en el grid? Si le asignas un datasource seguramente te funcione mejor con el evento DataBindingComplete

    jueves, 19 de marzo de 2015 7:44