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
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.
- Compartir respuesta