PDA

Ver la Versión Completa : Subtotales de un grupo en un PageFooter (QuickReport)


Lord Delfos
18-03-2008, 15:13:22
Hola, gente. A ver si alguien sabe cómo hacer esto, proque yo ya no sé qué hacer...

Tengo un reporte de QuickReport en el que imprimo por grupos unos asientos contables (agrupados por fecha y número). Al final de cada grupo imprimo un subtotal de ese grupo.

Hasta acá no hay problema. La cosa viene cuando yo quiero agregar un subtutal al final de la página, que me muestre lo que se lleva sumado de ese grupo (que se va a terminar de imprimir en la otra página ¿sí?). Hasta ahora lo que logré fue que me mostrara lo que se lleva sumado en todo el reporte (esto es, el campo Haber y Debe de my TQuery).

Algo así:

................................................
Fecha Asiento Descripción Debe Haber
-----------------------------------------------
3/08 2588 Tal cosa 15 100
Fuifui 4 9

Total Asiento 19 109

4/08 355 Otra 5 74

Transporte 5 74 <------- ¡Ajá!
................................................
Otramás 3 10

Total Asiento 8 84
................................................



La etiqueta Transporte es la que me jode la vida. Lo único que he podido hacer hasta ahora es hacer que sea una expresión SUM(query.Debe) o Haber, que funciona pero suma TODO el campo Debe.

Lo que me gustaría es una suma que se limite solamente al grupo en cuestión.

El Transporte está en un PageFooter, de manera que no estoy "adentro" del grupo...

No sé si se me entiende algo... esto de los reportes es bastate engorroso...

Saludos y gracias por leer.

jcarteagaf
18-03-2008, 15:27:55
Me imagino que para calcular el Subtotal usas un TQRExpr.

Y que tal si colocas un TQRLabel y haces el calculo del total de manera manual (por eventos):

1. Creas una variable a nivel del reporte
fTotal : Double;
2. Inicializas a cero la variable cada vez que se imprime la cabecera del Grupo:

procedure TqrExtracto.QRGroup1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
fTotal := 0;
end;

3. Vas acumulando el valor deseado en la variable por cada linea de detalle impresa

procedure TqrExtracto.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
fTotal := fTotal + TuTabla.TuCampo;
end;

4. En el evento OnBeforePrint del Pie de Pagina muestras el total acumulado

procedure TqrExtracto.PageFooterBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
qrlabel1.Caption := FormatFloat(',0.00',fTotal);
end;

5. Como decimos por aca, listo el Pollo.

Espero que sirva.

Saludos.

Lord Delfos
18-03-2008, 16:12:20
¡Sí! ¡Magistral!

¡Grande, jcarteagaf!

Funcionó maravillosamente... Hacía dos horas que me estaba peleando con variables y eventos... Es que esto de los reportes es nuevo para mí.

Gracias miles, amigo.

Saludongos.

ContraVeneno
18-03-2008, 16:46:41
Pues yo simplemente si quiero un sub total por cada grupo, coloco un TQRExpr en la banda "GroupFooter" y le coloco su propiedad "ResetAfterPrint" a verdadero. De esa forma, me va dando el subtotal de cada grupo.

Y para un total general, colco un TQRExpr en una banda "Summary" con su propiedad "ResetAfterPrint" a Falso.

Y con eso no tengo que codificar ni variables, ni eventos.