Mas de listview(suma)

Iniciado por mdg, 23 Octubre 2007, 00:48 AM

0 Miembros y 1 Visitante están viendo este tema.

mdg

Buenas amigos y sepan disculpar mi insistencia.

He encontrado una funcion ue suma items en el listview que es la siguiente:

Private Function SumarGrupo(Grupo As Integer)

Dim i As Integer
    'Recorre todos los items y para sumar los SubItems
    For i = 1 To ListView1.ListItems.Count
    If IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
    SumarGrupo = 0
    Else
         SumarGrupo = SumarGrupo + CDbl(ListView1.ListItems(i).SubItems(Grupo))
         End If
         
    Next i

End Function


Yo modifique lo de grupo para poder especificar la columna que deseo sumar, ahora el problema lo tengo cuando sumo una columan tal como:

DESCRIP.             COl1       COl2

Concepto1                20
Concepto2                           30
Concepto 3                10   

Ya que hay ciertos items en los que queda nulo y ahi me larga error, por una
cuestion estetica yo necesito que esos espacios queden vacios pero es el problema por el cual me tira el error, ojala puedan ayudarme, desde ya muchas gracias.

HaDeS, -

#1
Creo que tu problema se encuentra en esta parte del codigo:
Código (vb) [Seleccionar]

    If IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
    SumarGrupo = 0
    Else


cuando compruebes que es nulo, no resetees la variable sumagrupo a cero, sumala con el valor que ya venias sumando:
Código (vb) [Seleccionar]

    If IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
    SumarGrupo = SumarGrupo + 0
    Else

o simplemente coloca:
Código (vb) [Seleccionar]

    If not IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
    SumarGrupo = SumarGrupo + CDbl(ListView1.ListItems(i).SubItems(Grupo))
    End If

eso corrigiendo esa parte del codigo, pero veo que la funcion isnull no funciona, entonces podes aplicar este codigo:
Código (vb) [Seleccionar]

Private Function SumarGrupo(Grupo%)
Dim i%
For i = 1 To ListView1.ListItems.Count
If Val(ListView1.ListItems(i).SubItems(Grupo)) <> 0 Then
     SumarGrupo = SumarGrupo + CDbl(ListView1.ListItems(i).SubItems(Grupo))
     End If
Next i
End Function


Saludos y espero que te sirva ;)

Editado: Mi control se llama L, ahora le puse el nombre de tu control (ListView1) ...

mdg

Hola amigo, gracias por ayudarme, tu modificacion funciona perfectamete, gracias nuevamente y tambien por tu tiempo, pueden cerrar el tema.