Foros del Web » Programando para Internet » ASP Clásico »

¿Cómo sumar datos en ciclos anidados?

Estas en el tema de ¿Cómo sumar datos en ciclos anidados? en el foro de ASP Clásico en Foros del Web. Saludos. En ésta ocasión recurro a ustedes ya que por mas que lo intenté no me quedó... Resulta que jamás había tenido problemas al tabular ...
  #1 (permalink)  
Antiguo 22/06/2010, 07:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 82
Antigüedad: 16 años, 3 meses
Puntos: 4
Exclamación ¿Cómo sumar datos en ciclos anidados?

Saludos.

En ésta ocasión recurro a ustedes ya que por mas que lo intenté no me quedó...

Resulta que jamás había tenido problemas al tabular un recorset calculando sus totales... ya que era una sola consulta y sabía el número de columnas a presentar...

Ejemplo de RecordSet con 3 columnas:

Código vb:
Ver original
  1. D0 = 0
  2. D1 = 0
  3. D2 = 0
  4. For i = LBound(Vector,2) To UBound(Vector,2)
  5.     Response.Write  "<tr>"&_
  6.                     "   <td>"&Vector(0,i)&"</td>"&_
  7.                     "   <td>"&Vector(1,i)&"</td>"&_
  8.                     "   <td>"&Vector(2,i)&"</td>"&_
  9.                     "</tr>"
  10.     D0 = D0 + Vector(0,i)
  11.     D1 = D1 + Vector(1,i)
  12.     D2 = D2 + Vector(2,i)
  13. Next
  14. ' Los Totales
  15. Response.Write  "<tr>"&_
  16.                 "   <td>"&D0&"</td>"&_
  17.                 "   <td>"&D1&"</td>"&_
  18.                 "   <td>"&D2&"</td>"&_
  19.                 "</tr>"
(Claro con la estructura completa de la tabla)

Pero... el problema viene cuando el número de columnas depende de la subconsulta... por lo tanto es desconocido...
Ejemplo:

Código vb:
Ver original
  1. For i = LBound(V1,2) To UBound(V1,2)
  2.     sumH = 0
  3.     For j = LBound(V2,2) To UBound(V2,2)
  4.         'Aquí procedo con la Suma Horizontal... con la cual no tengo problemas
  5.         sumH = sumH + V2(0,j)
  6.     Next
  7.     ' Aquí se supone que va la Suma Vertical...
  8.     ' La cual... No sé como implementar...
  9. Next

Espero alguien me dé un pequeño empujoncito para resolver ésto...
Ya que tuve que hacer otra Query con la suma de los totales...

Pero me parece inecesario que teniendo los datos tabulados... deba hacer otra consulta para barrer los resultados...

Muchas gracias por sus sugerencias...
Nos seguimos leyendo...

P.S.: Utilizo GetRows para barrer mis resultados...
  #2 (permalink)  
Antiguo 22/06/2010, 08:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: ¿Cómo sumar datos en ciclos anidados?

No estoy muy seguro de entender tu problema pero creo que se puede solucionar agregando Count(), Sum() en tu select dependiendo de lo que necesites y haciendo subconsultas trata de ser mas especifico en tu problema, entre mas datos pongas sobre tu problema mas rapido se te podra ayudar.
  #3 (permalink)  
Antiguo 23/06/2010, 19:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 82
Antigüedad: 16 años, 3 meses
Puntos: 4
Información Respuesta: ¿Cómo sumar datos en ciclos anidados?

Saludos.

Así lo he hecho... pero... ¡exactamente éso es lo que quiero evitar!..

Tener que hacer otra consulta utilizando SUM() por cada columna...

Con los 2 ciclos anidados pinto mi tabla tal cual la necesito... con el problema de que no sé como sumar los totales verticales...

Quiero sumar los totales con ASP, no tener que recurrir a una consulta con SUM() general ...

Horizontalmente no Hay problema con las sumas... pero por el hecho de que las columnas de mi tabla (HTML) son dinámicas (generadas con una subconsulta (SQL)), no se me ocurre como comenzar a declarar una variable por cada columna generada para al final barrer la suma total de cada columna (HTML)...


Explicaré lo que hacen los ciclos que postée el día pasado...

El primero hace una consulta a un listado de personas con ciertas características...

El segundo hace una consulta a los montos de un catálogo, los cuales van en relación al ID del primer ciclo...

Al final (tfoot) de la tabla (HTML) quiero que aparezca la suma del monto de cada elemento encontrado en el catálogo del segundo ciclo...


Espero alguien pueda ayudarme...

Nos seguimos leyendo...
  #4 (permalink)  
Antiguo 24/06/2010, 09:11
 
Fecha de Ingreso: octubre-2009
Mensajes: 80
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: ¿Cómo sumar datos en ciclos anidados?

Me parece que estas entendiendo algo mal (si no es asi disculpame), cuando me refiero a subconsultas no son varias consultas independientes, es una sola consulta bien larga que tiene una o mas consultas adentro y te evitas el estar haciendo sumas sun() o conteos Count() por medio de ciclos.

y es mucho mas eficiente para tu sevidor cuando hay cientos de clientes accediendo al mismo codigo.

str = "select Personas.*, "&_
"(select sum(Montos_Catalogo From catalogo Where condicion ...), "&_
"(select Count(lo que quieras) As T From Tabla Where condicion ...), "&_
"FROM personas where condicion .......

Esta es la forma general que yo utilizo y funciona de maravilla, tendrias que acomodarlo a tu codigo y por medio de prueba y error encontrar lo que necesitas.

Nota: Cada uno de los () funciona como un campo adicional en la consulta global, por ej si Personas tiene 5 campos el resultado de la consulta te dara 7 campos y los 2 ultimos serian iguales para todos los registros encontrados.

Etiquetas: anidados, ciclos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:58.