Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: mdg en 23 Octubre 2007, 00:48 am



Título: Mas de listview(suma)
Publicado por: mdg en 23 Octubre 2007, 00:48 am
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.


Título: Re: Mas de listview(suma)
Publicado por: HaDeS, - en 24 Octubre 2007, 00:49 am
Creo que tu problema se encuentra en esta parte del codigo:
Código
  1.    If IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
  2.    SumarGrupo = 0
  3.    Else
  4.  

cuando compruebes que es nulo, no resetees la variable sumagrupo a cero, sumala con el valor que ya venias sumando:
Código
  1.    If IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
  2.    SumarGrupo = SumarGrupo + 0
  3.    Else
  4.  
o simplemente coloca:
Código
  1.    If not IsNull(ListView1.ListItems(i).SubItems(Grupo)) Then
  2.    SumarGrupo = SumarGrupo + CDbl(ListView1.ListItems(i).SubItems(Grupo))
  3.    End If
  4.  
eso corrigiendo esa parte del codigo, pero veo que la funcion isnull no funciona, entonces podes aplicar este codigo:
Código
  1. Private Function SumarGrupo(Grupo%)
  2. Dim i%
  3. For i = 1 To ListView1.ListItems.Count
  4. If Val(ListView1.ListItems(i).SubItems(Grupo)) <> 0 Then
  5.     SumarGrupo = SumarGrupo + CDbl(ListView1.ListItems(i).SubItems(Grupo))
  6.     End If
  7. Next i
  8. End Function
  9.  

Saludos y espero que te sirva ;)

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


Título: Re: Mas de listview(suma)
Publicado por: mdg en 25 Octubre 2007, 05:52 am
Hola amigo, gracias por ayudarme, tu modificacion funciona perfectamete, gracias nuevamente y tambien por tu tiempo, pueden cerrar el tema.