Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Subtotales en QuickReport (https://www.clubdelphi.com/foros/showthread.php?t=10175)

raugadel 12-05-2004 08:54:42

Subtotales en QuickReport
 
Necesito hacer subtotales por trimestre de un campo.
Tengo los campos mes, año e importe.
Necesito saber la suma de los importes por trimestre.
¿Como lo puedo hacer?

__cadetill 12-05-2004 13:19:35

Ahora no se si directamente con un TQrExpr se podría hacer, pero lo que seguro puedes hacer es controlar el evento BeforePrint de la banda donde se imprime año, mes,... y hacer sumatorios según los meses que sean en variables para luego imprimirlas

rafita 12-05-2004 14:58:04

Buenas,

te pongo un pequeño ejemplo de como lo hago yo:

Banda de título del inform o de cabecera de página... según tus necesidades.

Banda de grupo (QRGroup1) con la cabecera
QRGroup1.Expression: QImpTrabajo.Anno; // el campo de ruptura del grupo
QRGroup1.FooterBand: QRBand5; // la banda donde aparecerán los subtotales del grupo

Banda de detalle con todos los campos

Banda de pie de grupo con los subtotales (QRBand5)
QRBand5.BandType: rbGroupFooter;
QRBand5.LinkBand: QRGroup1; // cierra el enlace con su cabecera de grupo
Aquí tienes que utilizar un componente QRExpr con un contenido similar a este
'Suma Importes: '+SUM(QImpTrabajo.IMPORTE)+' Euros'

Esto te lo digo de cabeza, si tienes algún problema mándame un mensaje personal, aunque no estaré disponible hasta el miércoles 19 de mayo.

Ta´luego...
Rafa.

SnaKe 12-05-2004 16:13:49

Bien, supon esto:

Pones una Query que te devuelve como dices: mes, año e importe, algo de tipo:

Código SQL [-]
select
  mes, ano, importe
from tutabla
order by mes, ano // Esto es importante

A esa query le cargas los campos persistentes.

Le creas un nuevo campo persistente calculado que llamas por ejemplo trimestre y en el evento OnCalcFields de la query (y asegurate que la propiedad AutoCalcFields de la query está true) haces algo asi:

Código Delphi [-]
if (QConsultaMES.AsInteger <= 3) then
  QConsultaTRIMESTRE.AsInteger = 1
else if (QConsultaMES.AsInteger <= 6) then
  QConsultaTRIMESTRE.AsInteger = 2
else if (QConsultaMES.AsInteger <= 9) then
  QConsultaTRIMESTRE.AsInteger = 3
else
  QConsultaTRIMESTRE.AsInteger = 4;

Ahora ya montas el informe con las bandas que te han indicado anteriormente pero en la propiedad Expression de la banda de grupo pones que el campo que supone el cambio de grupo es: Trimestre (de la Query).

A mi me parece la solución más "limpia" pero seguro que hay otras.

Un saludo.


La franja horaria es GMT +2. Ahora son las 19:51:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi