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

Cita:
Iniciado por u_goldman Ver Mensaje
Hola...a lo mejor no estoy entendiendo bien el problema pero me parece que te estás complicando mucho, cuando revisé el post original vi la muestra de tus datos y básicamente solo es cambiar la cabecera en base al mandante y controlar los acumuladores cierto?

Quizás trataía cambiando un poco la aproximación:

Código:
'Obtener arreglo
ds = rs.getRows()
mandante = ""
total = 0
 
'iterar arreglo
for i = 0 to uBound(ds,2)
        'si el mandante es distinto al anterior
    if ds(0,i) <> mandante
        ImprimeCabecera
                'reasigna valor a mandante
        mandante = ds(0,i)
    end if
        'acumula
    total = total + ds(3,i)
 
        'imprime registro
    Imprime(ds(1,i)'cliente, ds(2,i)'credito, ds(3,i)'monto)
next

Ahora, para contestar lo del manejador de errores, quizas tengas que ponerlo inmediatamente despues de la linea donde se origina el error:

Código:
 
do while (condición por vector solamente)
  ImpresiónTitulos
  on error resume next
  do While (condicion vector y variable anterior)
    Acumula
    on error resume next
    do while (Condicion vector, varAnterior1, varAnterior2)
      if err.number <> 0 then
         exit do
      end if
       Acumula2, Imprime Linea
     loop
  loop
AcumulaSubtot
Variables a cero
loop
Imprime Totales

Ya nos diras mas cosas.


Saludos

Hola de nuevo U_G!
voy a probar lo que me decís de cambiar el while por for, aunque con poca fe. Esta noche estaré con eso de nuevo y te cuento.

El hecho es que necesito los bucles internos, no puedo manejarlo con condicionales porque en el ejemplo que puse aquí no quise embolar pero mi informe debe ser

Primer Nivel: Mandante
Segundo Nivel: Acumulado por Cliente
Tercer nivel: Acumulado por fecha
Subtotal por cliente
Subtotal por Mandante

Total General

Aclaro que obviamente, hay varios movimientos por mandante, a la vez que varios movimientos por cliente e incluso varios movimientos para el mismo cliente y la misma fecha. Lo más recomendable en estos casos es anidar bucles con varios niveles de condición para informar en cada break del bucle, el resultado de los acumuladores.

Con condicionales dentro del bucle lo probaré de todas maneras, ya a esta altura con que muestre el informe me conformo. Ya veré luego el tema con los manejadores de error... vos decís que justo debajo de la instrucción, antes incluso de acumular o mandar a imprimir....

ya te cuento que resulta de eso.

Mil gracias y bueno, en cuanto logre estandarizar una función para este tipo de listados que realmente utilizo con demasiada frecuencia y siempre tengo que darle vueltas para hacer andar... ya estaré compartiendola por aquí.
__________________
Why can't we not be sober?
www.partitorium.com.ar