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:
Esto va bien.If not Rs.bof then vercrs=Rs.GetRows() Else Nodata=1 'Para mensaje si no hay datos End if
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:
Esto es a grandes rasgos. Obviamente, acumulo con variable=variable+valor'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
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!