Búsqueda de códigos iguales en arreglo (resumen)

Que tal quería ver si me puedes ayudar.

Tengo un arreglo con productos (arreglo(var, 8)) y necesito hacer un resumen de ellos, osea sumar cantidad, peso, etc, entonces

Si tengo el código 0, repetido 20 veces, debería sumar la cantidad, peso, valor etc de esas 20 veces.

¿Cómo lo puedo hacer?

1 Respuesta

Respuesta
1

Lo único que puedes hacer es un par de bucles anidados que tomes el primer valor del Array y lo recorras para ir sumando los que sean iguales, moverte al segundo registro y volver a hacer lo mismo. Así hasta el final.

Un bucle While dentro de otro Bucle While se le dice a bucles anidados.

buen día.

me puedes ayudar ocn un ejemplo?

gracias

Voy a suponer que tu arreglo el código es el valor 0 de tu array y suponemos que ya está inicializado y con datos.

Código:

Dim i As Integer = 0 : Dim ii As Integer = 0 : Dim Valor As Integer

While i <= Arreglo.Length - 1

 Valor = Arreglo(i, 0)

While ii <= Arreglo.Length - 1

If Valor = Arreglo(ii, 0) Then

Valor += Integer.Parse(Arreglo(ii, 1).ToString())

End If

ii += 1

End While

i += 1

End While

En donde suma el valor, deberás agregarle más lineas si tienes que sumar más cosas, arreglar el valor si es 1 el correcto del Array y algunas cositas más pero ya depende de tu pericia, con eso recorrerás todo el Array en búsqueda de valores.

Valor += Integer.Parse(Arreglo(ii, 1).ToString())

como escribo eso en vb6?? lo marca en rojo

gracias denuevo

mitra lo que trate de hacer

For i = 0 To count
    For g = 0 To UBound(prods)
         If k(i) = prods(g, 0) Then
               FIN(i, 0) = prods(g, 0) '("CODIGO")
               FIN(i, 1) = prods(g, 1) '("descripcion")
               FIN(i, 3) = Val(FIN(i, 3)) + Val(prods(g, 3)) '("VALOR FACTURA")
               FIN(i, 5) = Val(FIN(i, 5)) + Val(prods(g, 5)) '("CANTIDAD")
               FIN(i, 6) = Val(FIN(i, 6)) + (Val(prods(g, 6)) * Val(prods(g, 5)))  '("PESO")
               FIN(i, 7) = Val(FIN(i, 7)) + Val(prods(g, 7)) '("neto")
            prods(g, 0) = ""
         End If
     Next
Next

No deberías usar VB6. Es muy antiguo.

Todo lo que diga += cambialo por la variable nuevamente es decir:

Valor = Valor +

i = i +

Luego del más viene lo que quieras adicionar.

Pasa tu proyecto a VB.NET es un consejo de amigo.

si es un problema que me enseñaran vb6, pero estoy contra el tiempo!

es muy difícil cambiarse?

While i <= prods()Length - 1
 no se como pasarlo a vb6

podrías ayudarme con este código mejor??

      p = 0
For i = 0 To count
    For g = 0 To UBound(prods)
         If k(i) = prods(g, 0) Then
               FIN(i, 0) = prods(g, 0) '("CODIGO")
               FIN(i, 1) = prods(g, 1) '("descripcion")
               FIN(i, 3) = Val(FIN(i, 3)) + Val(prods(g, 3)) '("VALOR FACTURA")
               FIN(i, 5) = Val(FIN(i, 5)) + Val(prods(g, 5)) '("CANTIDAD")
               FIN(i, 6) = Val(FIN(i, 6)) + (Val(prods(g, 6)) * Val(prods(g, 5)))  '("PESO")
               FIN(i, 7) = Val(FIN(i, 7)) + Val(prods(g, 7)) '("neto")
            prods(g, 0) = ""
         End If
         'p = p + 1
     Next
Next
        

 cuando pongo por ejemplo 2 facturas suma bien las cantidad, pero si son mas las cantidades se disparan.

gracias por la ayuda

Te puedo ayudar, pero el código no está completo, así que no lo comprendo del todo.

Mandame más código para ver las variables que faltan.

 Dim n As Integer
       Dim count As Integer
       Dim prodsFound As String
       n = 0
       count = 0
       prodsFound = ""
       For n = 0 To UBound(prods)  '' buscar productos distintos 
             If Len(prodsFound) <> Empty Then
                If InStr(1, prodsFound, prods(n, 0)) = 0 Then
                   prodsFound = prodsFound & prods(n, 0) & ","
                   count = count + 1
                End If
             Else
                prodsFound = prodsFound & prods(n, 0) & ","
                count = count + 1
             End If
       Next n
        k = Split(prodsFound, ",")
        ReDim Preserve FIN(count - 1, 7) ', 7)
      p = 0
For i = 0 To count - 1                    '' buscar iguales
    For g = 0 To UBound(prods)
       If k(i) = prods(g, 0) Then
           FIN(i, 0) = prods(g, 0) '("CODIGO")
           FIN(i, 1) = prods(g, 1) '("descripcion")
           FIN(i, 3) = Val(FIN(i, 3)) + Val(prods(g, 3)) '("VALOR FACTURA")
           FIN(i, 5) = Val(FIN(i, 5)) + Val(prods(g, 5)) '("CANTIDAD")
           If prods(g, 6) = "" Or prods(g, 6) = 0 Then
           FIN(i, 6) = 0
           Else
           FIN(i, 6) = Val(FIN(i, 6)) + (Val(prods(g, 6)) * Val(prods(g, 5)))'("PESO")
           End If
           FIN(i, 7) = Val(FIN(i, 7)) + Val(prods(g, 7)) '("neto")
            prods(g, 0) = Z
         End If
         'p = p + 1
     Next
Next
       
 espero me entiendas gracias!

En la suma no veo error, pero veo un error lógico en la parte de Buscar los productos distintos que es donde se hacen los Array para luego recorrerlos.

La Pregunta es, ¿por qué haces ese paso primero y no usas directamente el Array original?

porque no supe de otra
forma y es para saber el tamaño del arreglo fin.

No entiendo la pregunta.

Si ya no me necesitas, cierra y valora la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas