PDA

Ver la Versión Completa : Quickreport y totales al final de la impresion


LucianoRey
23-08-2005, 02:49:59
Hola, quisiera me ayudaran con mi siguiente problema:
Tengo un reporte con corte por grupos de 4 categorias, al final del reporte mando el total global, y ademas subtotales por cada categoria, es decir:


Categoria cantA cantB cantC
Niño 120 20 15
Adulto 40 10 5
Local 160 30 20

Niño 100 50 15
Adulto 10 25 3
Foraneo 110 75 18

RecintoX 270 105 38

Niño 110 10 18
Adulto 30 10 7
Local 140 20 25

Niño 150 50 14
Adulto 17 30 1
Foraneo 167 80 15

RecintoY 307 100 63

AreaX 577 205 101

Gran total ___________________
Total Niño ___________________
Total Niño Local ___________________
Total Niño Foraneo ___________________
Total Adulto ___________________
Total Adulto Local ___________________
Total Adulto Foraneo ___________________.,


ahora esos subtotales, los pinto por medio de qrlabels, dentro de mi programa hago las sumas de esos subtotales, y al terminar el reporte, mando las cantidades a los labels, la primera vez bien, pero las posteriores me deja antiguos valores.
Ya probe poniendo una cadena vacia a mis labels antes de imprimir la banda que los contiene, pero no me funciono ó no lo supe hacer, tambien puse algunos qrexpression's (caption, expresion), pero no pude hacer que pintara algo, tambien dentro de la popiedad expression hice la suma de las variables de mi programa y nada.

Una disculpa tambien porque no pude alinear aqui, mi ejemplo de totales, pero espero se entienda.

Gracias de antemano.

ContraVeneno
23-08-2005, 16:32:24
1.- Puedes alinear utilizando las etiquetas (http://www.clubdelphi.com/foros/misc.php?do=bbcode) code:

Categoria cantA cantB cantC
Niño 120 20 15
Adulto 40 10 5
Local 160 30 20


2.- ¿Pusiste los QRExpression en una SummaryBand? :confused:
En mi reporte coloco QRexpressions en una SummaryBand y haciendo las operaciones en la propieedad expression me da los resultados sin problemas.

LucianoRey
23-08-2005, 17:20:22
Si los tengo en un banda de tipo Summary, tengo mi banda de detalle y en ella pongo los campos que quiero que salgan.
Luego en cada banda de grupo pongo un qrexpression y en su propiedad pongo sum(campo), luego al final del reporte en la banda Summary, para el total global hago lo mismo.
Pero en los totales por grupo, como no me funciono asi, puse labels y dentro de mi programa, defini algunos variables de tipo registro, luego cada vez que pasa por el detail hago la suma por grupos para dejarla en estos registros, es decir:


if DataModule1.ADOQuery1.FieldValues['column3'] = 'DISTRITO FEDERAL' then
begin
if DataModule1.ADOQuery1.FieldValues['column4'] = 'Niño' then
begin
nSumaInfDf.EneA := nSumaInfDf.EneA + DataModule1.ADOQuery1.FieldValues['enea'];
nSumaInfDf.FebA := nSumaInfDf.FebA + DataModule1.ADOQuery1.FieldValues['feba'];
else if DataModule1.ADOQuery1.FieldValues['column4'] = 'Adulto' then
begin
nSumaAduDf.EneA := nSumaAduDf.EneA + DataModule1.ADOQuery1.FieldValues['enea'];
nSumaAduDf.FebA := nSumaAduDf.FebA + DataModule1.ADOQuery1.FieldValues['feba'];
nSumaAduDf.MarA := nSumaAduDf.MarA + DataModule1.ADOQuery1.FieldValues['mara'];
nSumaAduDf.AbrA := nSumaAduDf.AbrA + DataModule1.ADOQuery1.FieldValues['abra'];
else if DataModule1.ADOQuery1.FieldValues['column3'] = 'PROVINCIA' then
begin
if DataModule1.ADOQuery1.FieldValues['column4'] = 'Niño' then
begin
nSumaInfPr.EneA := nSumaInfPr.EneA + DataModule1.ADOQuery1.FieldValues['enea'];
nSumaInfPr.FebA := nSumaInfPr.FebA + DataModule1.ADOQuery1.FieldValues['feba'];




y luego antes de imprimir el summary, asigno los valores de mis registros a los qrlabels, lo hice asi porque no me funciono cuando puse qrexp.. en lugar de qrlabels.

LucianoRey
23-08-2005, 17:27:34
Ah, se me olvidaba, la forma en que trate de asignar los valores a los qrexpression la hice de las siguientes formas:

QRExpr1.Caption:=IntToStr( nSumaInfDf.EneA + nSumaAduDf.EneA ); y nada
QRExpr1.Value no supe como usarlo
QRExpr1.Expression:=IntToStr( nSumaInfDf.EneA + nSumaAduDf.EneA ); y nada


y poniendo en la propiedad Expression, la formula SUM( nSumaInfDf.EneA + nSumaAduDf.EneA ) y nada, saludos y gracias.

ContraVeneno
24-08-2005, 17:29:11
QRExpr1.Expression:=IntToStr( nSumaInfDf.EneA + nSumaAduDf.EneA ); y nada
Es que mas bien creo que aqui se utiliza de la siguiente forma:
Propiedad Expression = Sum(Campo3)
para que te de la suma.

Count(campo), AVG(campo), etc, etc... puedes utilizar el editor de la propiedad expression para ver cuál es la función que necesitas.

jdangosto
25-08-2005, 12:01:30
¿Por que no utilizas una simple consulta en un tquery?

El resultado lo plasmas en el informe y creo que te evitaría muchos quebraderos de cabeza.

Ya sabes...
Select SUM(campo1) from tu_tabla;

ContraVeneno
25-08-2005, 17:29:57
En realidad un QRExpression que funcione correctamente ahorraría un uso inecesario de un TQuery extra.