PDA

Ver la Versión Completa : Un problemilla con TQRExpr


k2k2k2
31-05-2006, 16:13:15
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:

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