Cita:
Iniciado por u_goldman 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í.