none
Mostrar Suma de Totales en TextBox RRS feed

  • Pregunta

  • Holas de Nuevo Tengo una gran duda si me pudieran ayudar

    Necesito Que cada vez que valla agregando datos a mi ListView , LA PENSION Y DSCT E IMPORTE SE VALLAN SUMANDO EN LOS TEXTBOX TOTALES DE ABAJO. 

    Con el total de matriculas ya he realizado con 

    TotAlu = ListView1.Items.Count
            TextotalAlumnos.Text = TotAlu

    Como pudiera hacer con los demas totales?, GRACIAS. 

    martes, 19 de junio de 2012 21:09

Respuestas

  • Como pudiera hacer con los demas totales?

    podrias usar linq o sino recorrer cada item y sumarlo

    Dim total As Integer = 0
    
    For Each item As ListViewItem In ListView1.Items
    
        total += CInt(item.SubItems(4).Text)
    
    Next

    Nota: algo que veo problematico es ese S/ que tienes como dato, eso no va a permitir sumar el campo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta LURINVB martes, 19 de junio de 2012 23:53
    martes, 19 de junio de 2012 21:18
  • Hola

    1º Cuando das por respondido tu pregunta, deberías de abrir otro hilo, es posible que Leandro u otros compañeros no entren en el foro y no vean tu nueva pregunta

    2º En el código que as expuesto podrías simplificarlo, no hace falta que recorras todas las filas por cada columna que quieras sumar

    private sub SumarColumnas()        
    Dim Total As Integer = Pension Dim TotalDsct As Integer = Descuento Dim TotalIPT As Integer = Importe For Each Item As ListViewItem In ListView1.Items Total += CInt(Item.SubItems(4).Text) TotalDsct += CInt(Item.SubItems(5).Text) TotalIPT += CInt(Item.SubItems(6).Text) Next Textotalpension.Text = Total Textotaldsct.Text = TotalDsct Textotalimporte.Text = TotalIPT
    End Sub

    Como ves recorremos solo una vez las líneas.
    Las variables que están en negrita y subrayado, es para darle un valor inicial a las columnas ¿no? porque ese código estas recorriendo todas las filas y a no ser que quieras dar un valor inicial, el valor que tienes que dar es 0

    3º a lo que ibamos, tienes dos formas para que el campo total reste los valores de la fila eliminada

    ir restando las filas eliminadas

    Private Sub ButtonQUITAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTTONQUITAR.Click Dim i As Integer

    Total =Cint( Textotalpension.Text)
    TotalDsct = Cint(Textotaldsct.Text)
    TotalIPT = CInt(Textotalimporte.Text)

    For i = ListView1.SelectedItems.Count - 1 To 0 Step -1
    Total -= CInt(ListView1.SelectedItems(i).SubItems(4).Text)
    TotalDsct -= CInt(ListView1.SelectedItems(i).SubItems(5).Text)
    TotalIPT -= CInt(ListView1.SelectedItems(i).SubItems(6).Text)

    ListView1.SelectedItems(i).Remove() Next

    Textotalpension.Text = Total
    Textotaldsct.Text = TotalDsct
    Textotalimporte.Text = TotalIPT

    End Sub

    O una vez eliminadas las filas vuelves a contar todas las columnas. Llamarias al sub SumarColumnas 

    Saludos

    • Marcado como respuesta LURINVB miércoles, 20 de junio de 2012 4:56
    miércoles, 20 de junio de 2012 0:51
  • Lo único que tienes que hacer es darle el número de filas de ListView

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Total = CInt(Textotalpension.Text)
            TotalDsct = CInt(Textotaldsct.Text)
            TotalIPT = CInt(Textotalimporte.Text)
    
            For Each item As ListViewItem In ListView1.SelectedItems
    
                Total -= CInt(item.SubItems(4).Text)
                TotalDsct -= CInt(item.SubItems(5).Text)
                TotalIPT -= CInt(item.SubItems(6).Text)
    
                item.Remove()
    
            Next
    
            Textotalpension.Text = CStr(Total)
            Textotaldsct.Text = CStr(TotalDsct)
            Textotalimporte.Text = CStr(TotalIPT)
            TextotalAlumnos.Text = CStr(ListView1.Items.Count)
    
        End Sub


    • Editado ToniAG miércoles, 20 de junio de 2012 9:04
    • Marcado como respuesta LURINVB jueves, 21 de junio de 2012 5:20
    miércoles, 20 de junio de 2012 9:02

Todas las respuestas

  • Como pudiera hacer con los demas totales?

    podrias usar linq o sino recorrer cada item y sumarlo

    Dim total As Integer = 0
    
    For Each item As ListViewItem In ListView1.Items
    
        total += CInt(item.SubItems(4).Text)
    
    Next

    Nota: algo que veo problematico es ese S/ que tienes como dato, eso no va a permitir sumar el campo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta LURINVB martes, 19 de junio de 2012 23:53
    martes, 19 de junio de 2012 21:18
  • Bueno Leandro Gracias, me ayudo bastante aunque si tienes razón si lo dejo con "S/" me sale error al momento de agregar. Ahora tengo una consulta si me pudieras ayudar: en lo Siguiente:

     TotAlu = ListView1.Items.Count
            TextotalAlumnos.Text = TotAlu + 1
            Dim Total As Integer = Pension
            For Each Item As ListViewItem In ListView1.Items
                Total += CInt(Item.SubItems(4).Text)
            Next
            Textotalpension.Text = Total
            Dim TotalDsct As Integer = Descuento
            For Each Item As ListViewItem In ListView1.Items
                TotalDsct += CInt(Item.SubItems(5).Text)
            Next
            Textotaldsct.Text = TotalDsct
            Dim TotalIPT As Integer = Importe
            For Each item As ListViewItem In ListView1.Items
                TotalIPT += CInt(item.SubItems(6).Text)
            Next
            Textotalimporte.Text = TotalIPT
    
            Dim Lis As ListViewItem
            Lis = ListView1.Items.Add(Nombre)
            Lis.SubItems.Add(Sexo)
            Lis.SubItems.Add(Especialidad)
            Lis.SubItems.Add(Turno)
            Lis.SubItems.Add(Pension)
            Lis.SubItems.Add(Descuento)
            Lis.SubItems.Add(Importe)
            
        End Sub

    Bueno mi consulta es esta, al momento que le doy QUITAR un elemento de mi coleccion de ListView, lo quita mediante este codigo.

     Private Sub ButtonQUITAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTTONQUITAR.Click
            Dim i As Integer
            For i = ListView1.SelectedItems.Count - 1 To 0 Step -1
                ListView1.SelectedItems(i).Remove()
            Next
        End Sub

    Quita normal los elementos pero los "TOTALES SE QUEDAN COMO ESTAN" quisiera que a la vez quite un elemento del ListView Tambien se valla restando Haber si me ayudas para guiarme un poco, Gracias.

    martes, 19 de junio de 2012 23:51
  • Hola

    1º Cuando das por respondido tu pregunta, deberías de abrir otro hilo, es posible que Leandro u otros compañeros no entren en el foro y no vean tu nueva pregunta

    2º En el código que as expuesto podrías simplificarlo, no hace falta que recorras todas las filas por cada columna que quieras sumar

    private sub SumarColumnas()        
    Dim Total As Integer = Pension Dim TotalDsct As Integer = Descuento Dim TotalIPT As Integer = Importe For Each Item As ListViewItem In ListView1.Items Total += CInt(Item.SubItems(4).Text) TotalDsct += CInt(Item.SubItems(5).Text) TotalIPT += CInt(Item.SubItems(6).Text) Next Textotalpension.Text = Total Textotaldsct.Text = TotalDsct Textotalimporte.Text = TotalIPT
    End Sub

    Como ves recorremos solo una vez las líneas.
    Las variables que están en negrita y subrayado, es para darle un valor inicial a las columnas ¿no? porque ese código estas recorriendo todas las filas y a no ser que quieras dar un valor inicial, el valor que tienes que dar es 0

    3º a lo que ibamos, tienes dos formas para que el campo total reste los valores de la fila eliminada

    ir restando las filas eliminadas

    Private Sub ButtonQUITAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTTONQUITAR.Click Dim i As Integer

    Total =Cint( Textotalpension.Text)
    TotalDsct = Cint(Textotaldsct.Text)
    TotalIPT = CInt(Textotalimporte.Text)

    For i = ListView1.SelectedItems.Count - 1 To 0 Step -1
    Total -= CInt(ListView1.SelectedItems(i).SubItems(4).Text)
    TotalDsct -= CInt(ListView1.SelectedItems(i).SubItems(5).Text)
    TotalIPT -= CInt(ListView1.SelectedItems(i).SubItems(6).Text)

    ListView1.SelectedItems(i).Remove() Next

    Textotalpension.Text = Total
    Textotaldsct.Text = TotalDsct
    Textotalimporte.Text = TotalIPT

    End Sub

    O una vez eliminadas las filas vuelves a contar todas las columnas. Llamarias al sub SumarColumnas 

    Saludos

    • Marcado como respuesta LURINVB miércoles, 20 de junio de 2012 4:56
    miércoles, 20 de junio de 2012 0:51
  • Sobre el punto 2 que te comente mas arriba, creo lo tienes mas liado todavía, según el código expuesto llamas a ese código cada vez que se ingresa una línea, me equivoco. En ese caso no hace falta que vuelvas a recorrer todas las líneas para contarlas

    Podrías declarar las variables  Total, TotalDsct,TotalIPT fuera de Sub

    Private Total as integer
    Private TotalDsct as integer
    Private TotalIPT as integer

    Y a medida que vas añadiendo líneas vas sumando

    Total += Pension
    TotalDsct +=
    Descuento
    TotalIPT +=
    Importe

    Textotalpension.Text = Total
    Textotaldsct.Text = TotalDsct
    Textotalimporte.Text = TotalIPT

    • Marcado como respuesta LURINVB miércoles, 20 de junio de 2012 4:56
    • Desmarcado como respuesta LURINVB miércoles, 20 de junio de 2012 4:56
    miércoles, 20 de junio de 2012 1:09
  • Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTTONQUITAR.Click
            Dim i As Integer
    TotAlu = CInt(TextotalAlumnos.Text)
            Total = CInt(Textotalpension.Text)
            TotalDsct = CInt(Textotaldsct.Text)
            TotalIPT = CInt(Textotalimporte.Text)
            For i = ListView1.SelectedItems.Count - 1 To 0 Step -1
    TotAlu -= CInt(ListView1.SelectedItems(i).Text)
                Total -= CInt(ListView1.SelectedItems(i).SubItems(4).Text)
                TotalDsct -= CInt(ListView1.SelectedItems(i).SubItems(5).Text)
                TotalIPT -= CInt(ListView1.SelectedItems(i).SubItems(6).Text)
                ListView1.SelectedItems(i).Remove()
            Next
    TextotalAlumnos.Text = TotAlu
            Textotalpension.Text = Total
            Textotaldsct.Text = TotalDsct
            Textotalimporte.Text = TotalIPT
        End Sub
    
    End Class
    Gracias Amigo me has ayudado bastante mi ULTIMA duda es todo anda bien a la hora de quitar también quisiera que el TOTAL de alumnos también se reste, como ves lo he puesto ahí pero me sale ERRO claro porque el dato ingresado en el TextNombre no es Integer como podría Convertirlo a Numérico, Ingresando Texto?, Ahí lo de dejado Subrayado, Gracias 
    miércoles, 20 de junio de 2012 4:56
  • Lo único que tienes que hacer es darle el número de filas de ListView

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Total = CInt(Textotalpension.Text)
            TotalDsct = CInt(Textotaldsct.Text)
            TotalIPT = CInt(Textotalimporte.Text)
    
            For Each item As ListViewItem In ListView1.SelectedItems
    
                Total -= CInt(item.SubItems(4).Text)
                TotalDsct -= CInt(item.SubItems(5).Text)
                TotalIPT -= CInt(item.SubItems(6).Text)
    
                item.Remove()
    
            Next
    
            Textotalpension.Text = CStr(Total)
            Textotaldsct.Text = CStr(TotalDsct)
            Textotalimporte.Text = CStr(TotalIPT)
            TextotalAlumnos.Text = CStr(ListView1.Items.Count)
    
        End Sub


    • Editado ToniAG miércoles, 20 de junio de 2012 9:04
    • Marcado como respuesta LURINVB jueves, 21 de junio de 2012 5:20
    miércoles, 20 de junio de 2012 9:02
  • Gracias Bro concluido con mis dudas recién comienzo, voy en mi II ciclo y me parece muy interesante y divertido :D y de nuevo, Gracias por tu Aporte."Toni"
    jueves, 21 de junio de 2012 5:23