Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Un problemilla con TQRExpr (https://www.clubdelphi.com/foros/showthread.php?t=32222)

k2k2k2 31-05-2006 16:13:15

Un problemilla con TQRExpr
 
Hola a todo el mundo, gracias de antemano. Tengo un problema con quickreport, necesito hacer un reporte que tiene la siguiente estructura.

Group Header
Detail
Group Footer

En Group Header muestro los datos de una empresa
En Detail muestro los alumnos asociados con esa empresa
En Group Footer muestro el final de la página

Los datos aparecen agrupados por empresa.

El problema aparece cuando tengo que calcular una expresion (TQRExpr) en el Group Header a partir de los datos mostrados en Detail. En el Group Header aperece calculado el dato anterior, es decir el de la empresa anterior. Que debo hacer para actualizar esta expresión una vez mostrado el Group Header.

Gracias por vuestra ayuda. Un saludo.

marcoszorrilla 31-05-2006 16:21:38

Si quieres decir que te acumula lo anterior, mírate la propiedad ResetAfterPrint, hablo de memoria, así que revisa las propiedades, de la banda Summary en donde colocas dicho componente.

Un Saludo.

luisgutierrezb 31-05-2006 19:49:12

bueno, el problema es por como trabaja el qrExpr, te hace los calculos sobre lo que lleva procesado de la tabla no sobre toda la tabla...

k2k2k2 31-05-2006 23:08:55

Gracias por la respuestas, marcoszorrilla no mi problema no es que acumule la operación, es como bien me temía y me acaba de confirmar luisgutierrezb, que la operación la hace de lo que tenga por encima.

Mi pregunta ahora es si puedo recuperar esta operación, he probado colocando un TQRExpr debajo del Detail en el Group Footer, y despues he modificado el evento OnPrint del TQRExpr para que el valor de la operación la coloque en un label que he puesto en el Group Footer, pero no funciona. Algo como esto.

QRLabel1.Caption:= QRExpr1.Value.strResult;

Pero nada de nada. Esto mismo lo he probado en el BeforePrint del Group Footer. Alguna sugerencia, o es algo imposible de hacer con QuickReport. Gracias y un saludo.

ContraVeneno 31-05-2006 23:41:33

Pues yo simplemente coloco el TqrExp en el Group footer y me muestra el total agrupado correctamente.

¿colocas el final de la página en el groupFooter? ¿No sería mejor usar un summary para el final de la página?

k2k2k2 01-06-2006 13:18:32

Si coloco el QRExpr en el group footer si funciona pero el problema es que debe de aparece en el group header.

Lepe 07-06-2006 14:22:00

Ampliando un poco más: El problema que veo, es precisamente el Header, cuando se imprime, aún no se sabe cuantas líneas de Detail tiene, ni tampoco la suma (o la operación que se haga) por tanto coge las sumas acumuladas de las páginas anteriores.

Directamente asocia los controles del Group Header a otra consulta. Esta consulta hará las sumas con el mismo "Where" que el detalle. De esta forma puedes saber los totales antes de imprimir el Detalle; son 2 consultas para un mismo Report, pero no creo que haya otra forma.

SAludos

k2k2k2 07-06-2006 23:46:59

Gracias Lepe lo probare y contare los resultados.
Un saludo.

k2k2k2 09-06-2006 17:17:05

Bueno ya esta solucionado, he seguido el consejo de Lepe y he creado una consulta para calcularlo antes, despues mediante el evento de OnStartPage del QReport, modificada un QRLabel que coloque en el Group Header.
El codigo ha sido este:
Código Delphi [-]
 
procedure TfrmReporte1.QuickRep1StartPage(Sender: TCustomQuickRep);
var
  total: Double;
begin
  total:=0;
  total:=DM.ADOQuery1.FieldByName('dias').AsInteger*DM.ADOQuery2.Fields[0].AsInteger*DM.ADOConfig.FieldValues['cuantiaprac'].AsInteger;
  QRLabel1.Caption:=FloatToStr(total)+' €';
  DM.ADOQuery2.Next;
end;
Siendo ADOQuery2 la consulta que he utilizado para calcular el número de alumnos.

Pues nada gracias de nuevo a todos. Un saludo.:D :D :D


La franja horaria es GMT +2. Ahora son las 10:53:02.

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