Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2010, 10:44
Avatar de verinchi
verinchi
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Recorrido de matriz recordset desbordado (Corte de control)

Hola Foreros! Tanto tiempo sin preguntar...

Les comento el problema que me está rompiendo la cabeza a ver qué se les ocurre.
Tengo un recordset que almaceno en una matriz con la función GetRows de ASP y lo que quiero es, mediante la identificación del cambio de un dato, hacer un listado subtotalizado del contenido.

La idea general es esta:
En el recordset llamo: Mandante, Cliente, Credito, Monto
Esto lo coloco en la variable vecrs de tipo matriz con GetRows.
Los punteros se llaman igual que las columnas por una cuestión memotécnica

Abro el recordset
Código:
If not Rs.bof then
vercrs=Rs.GetRows()
Else
Nodata=1 'Para mensaje si no hay datos
End if
Esto va bien.
Luego, en la página, dado que los datos vienen ordenados por la columna mandante hago lo siguiente (No pongo el htm para que se vea más claro)
Código:
'Con i seteado a 0 al inicio
Manterior=vecrs(Mandante,i)
While i<Ubound(vecrs,2)
    Mandante: vecrs(Mandante,i)
    while i<Ubound(vecrs,2 and Manterior=vecrs(Mandante,i)
      Imprimir datos
      Sumar acumulador
     i=i+1
     Wend
     Acumular total general
     acumulador a cero
 wend
Imprimir total general
Esto es a grandes rasgos. Obviamente, acumulo con variable=variable+valor
Hago conversiones de tipos de datos en los enteros, formateos de números... cosas que no vienen al caso.

El asunto es que, colocando i<ubound(vecrs,2) me lista solo un dato de los dos que se que devuelve la consulta

Si coloco i<=ubound(vecrs,2) me da subíndice fuera de intervalo en la línea while i<Ubound(vecrs,2 and Manterior=vecrs(Mandante,i)

Alguien sabe de qué forma puedo resolverlo? Porque la idea en general, y en otros lenguajes, es muy simple. Un corte de control sobre un elemento, recorriendo una matriz con un bucle combinado.
La "Lectura" de la matriz se realiza en el punto más interno de los cortes (el i=i+1) y debería hacerlo.

Sin pasar el recordset a matriz es peor, directamente da exepción en la línea donde tengo el while con doble condición y ni caso...

Es urgente, cualquier sugerencia será bienvenida y debidamente probada. Gracias!
__________________
Why can't we not be sober?
www.partitorium.com.ar