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
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 - 1no 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 Nextespero 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.
- Compartir respuesta