Ver Mensaje Individual
  #11 (permalink)  
Antiguo 24/11/2011, 02:04
Avatar de erbuson
erbuson
 
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: revision codigo: sacar duplicado

Mientras tu contestabas, yo estaba dandole vueltas a esta opcion, que no la he probado pero se me ocurre que podría funcionar.

Código vb:
Ver original
  1. Private Sub Totalizacion()
  2.   Dim Hasta As Integer, LineaActual As Integer, LineaTotales As Integer
  3.   Hasta = List1.ListCount - 1
  4.   ' Efectuamos un bucle invertido desde el final
  5.  For LineaActual = Hasta To 0 Step -1
  6.     ' Conservaremos en el 1º los totales de las referencias iguales
  7.    LineaTotales = ElPrimero(List1.List(LineaActual))
  8.     ' Si la linea de Totales es distinta de la linea actual,
  9.    ' significa que como mínimo hay dos
  10.    If LineaTotales <> LineaActual Then
  11.       ' Sumamos la actual a la inicial
  12.      List2.List(LineaTotales) = List2.List(LineaTotales) + List2.List(LineaActual)
  13.       List3.List(LineaTotales) = List3.List(LineaTotales) + List3.List(LineaActual)
  14.       List4.List(LineaTotales) = List4.List(LineaTotales) + List4.List(LineaActual)
  15.       List5.List(LineaTotales) = List5.List(LineaTotales) + List5.List(LineaActual)
  16.       ' Eliminamos la linea procesada de todos los List
  17.      List1.RemoveItem (LineaActual)
  18.       List2.RemoveItem (LineaActual)
  19.       List3.RemoveItem (LineaActual)
  20.       List4.RemoveItem (LineaActual)
  21.       List5.RemoveItem (LineaActual)
  22.     End If
  23.   Next
  24. End Sub
  25.  
  26. Private Function ElPrimero(Referencia As String) As Integer
  27.   ' Devuelve el número de indice del 1er elemento coincidente
  28.  For ElPrimero = 0 To List1.ListCount - 1
  29.     If List1.List(ElPrimero) = Referencia Then Exit Function
  30.   Next
  31. End Function

La idea es mantener como linea de Total la primera aparicion de la referencia en el list, acumulando hacia esta desde el final hacia arriba.

Si quieres pruebalo y me dices si algo funciona o falla.
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...