Fórum Dúvidas na elaboração de Relatório - QuickReport #326516
31/07/2006
0
estou utilizando delphi 5.0 Pro e Banco MySql 5.0. Criei um relatório com quickrep com o faturamento de escolas de diversos estados e agrupei por estados. Ficou nesse layout:
AL Janeiro Fevereiro
1 - Escola Tal 1.500,00 1.000,00
e assim por diante...coloquei no relatório um qrGroup (expression setado para a tabela.uf e Footer Band para o group footer), um detail, um Group Footer e um summary. O relatório está perfeito com exceção de uma coisa: a cada final de uf eu queria colocar os totais de pagos e pendentes por estado e não estou conseguindo (ele repete o resultado do primeiro estado para todos os outros) testei o sql dentro do gerenciador e todos os registros saíram corretamente. Acho que linkei algo errado. alguém pode ajudar?
Muito obrigado.
Zooropa
Curtir tópico
+ 0Posts
31/07/2006
Cabelo
qual o evento?????
Gostei + 0
01/08/2006
Zooropa
pra começar, eu executo uma query que carrega todos os movimentos de 2006 (com algumas regras). A query me retorna os dados sendo que cada mês de uma escola como sendo um registro. Para criar o formato de histórico (para cada registro 1 escola com 12 meses) eu criei um laço no FormCreate do Relatório e carrego uma outra tabela (tbFatura), sendo que aí eu faço o tratamento dos valores pagos e pendentes (já carrego tb duas variáveis com o somatório total de pagos e pendentes). O QRGroup está com expression setado para tbFatura.UF e está tudo ok. Como disse antes o meu problema é o GroupFooter (este está setado ao QRGoup porém eu coloquei QRDBText´s setados a uma query que fica no formulário - contendo apenas os somatórios de pagos e pendente por uf). Esta query tb está ok só que o GroupFooter repete o resultado de AL para todos os outros estados. Como resolvo isso?
Gostei + 0
03/08/2006
Zooropa
alguém pode mes ajudar nisso? :(
Gostei + 0
06/08/2006
Micheus
Gostei + 0
09/08/2006
Zooropa
neste caso eu carrego no form create do relatório uma tabela temporária e o group header está setado ao uf desta tabela (tbFatura), enquanto que os valores do Group Footer estão setados para uma query que está no form. Não estou usando DataSource, estou linkando o dataset do QuickReport a TBFAtura assim que termino de carregar os dados. Realmente o Group Footer não acompanha a mudança de uf´s do Group Header, como soluciono isso?
Ah! já tentei o QRExpression e acontece a mesma coisa. Muito obrigado.
Gostei + 0
09/08/2006
Micheus
Gostei + 0
10/08/2006
Zooropa
cara, obrigado pela ajuda, realmente era a ausência de parâmetros. Fiz o seguinte como vc me orientou:
with qyTotUf do begin active := false; sql.clear; sql.add(´select uf, sum(janeiro_pg) as Jan_PG, sum(janeiro_pd) as Jan_PD, sum(fevereiro_pg) as Fev_PG, ´); sql.add(´sum(fevereiro_pd) as Fev_PD, sum(marco_pg) as Mar_PG, sum(marco_pd) as Mar_PD, ´); sql.add(´sum(abril_pg) as Abr_PG, sum(abril_pd) as Abr_PD, sum(maio_pg) as Mai_PG, sum(Maio_pd) as Mai_PD, ´); sql.add(´sum(junho_pg) as Jun_PG, sum(junho_pd) as Jun_PD, sum(julho_pg) as Jul_PG, sum(julho_pd) as Jul_PD ´); sql.add(´from tbrelfat where uf = :uf group by uf´); Parambyname(´uf´).asstring := DM.tbFatura.Fieldbyname(´uf´).asstring; active := true; end; Jan_Pg.caption := qyTotUf.Fieldbyname(´Jan_Pg´).asstring; Jan_Pd.caption := qyTotUf.Fieldbyname(´Jan_Pd´).asstring;
Esse código está no AfterPrint do QrGroup. Como faz bastante tempo que não faço relatórios com valores eu fiquei apanhando nestes subtotais. Obrigado cara.
Gostei + 0
10/08/2006
Micheus
1) no OnCreate do form do seu relatório adcionar esta parte do código:
with qyTotUf do begin sql.add(´select uf, sum(janeiro_pg) as Jan_PG, sum(janeiro_pd) as Jan_PD, sum(fevereiro_pg) as Fev_PG, ´); sql.add(´sum(fevereiro_pd) as Fev_PD, sum(marco_pg) as Mar_PG, sum(marco_pd) as Mar_PD, ´); sql.add(´sum(abril_pg) as Abr_PG, sum(abril_pd) as Abr_PD, sum(maio_pg) as Mai_PG, sum(Maio_pd) as Mai_PD, ´); sql.add(´sum(junho_pg) as Jun_PG, sum(junho_pd) as Jun_PD, sum(julho_pg) as Jul_PG, sum(julho_pd) as Jul_PD ´); sql.add(´from tbrelfat where uf = :uf group by uf´); end;
2) no AfterPrint do Group, apenas:
qyTotUf.Close; qyTotUf.Parambyname(´uf´).asstring := DM.tbFatura.Fieldbyname(´uf´).asstring; qyTotUf.Open;
3) na GroupFooter, se for cabível, vc poderia colocar dois QRDBText ligados a sua query, assim não seria necessário fazer as atribuições aos QRLabel´s:
Jan_Pg.caption := qyTotUf.Fieldbyname(´Jan_Pg´).asstring; Jan_Pd.caption := qyTotUf.Fieldbyname(´Jan_Pd´).asstring;
Como sua query está parametrizada e não é modificada em nenhum outro momento, com estas ações vc otimiza todo o processo de atribuições que está sendo feito repetidamente a cada impressão do GroupHeader.
[]s
Gostei + 0
01/09/2006
Zooropa
valeu pela dica, já fiz a modificação na query. Quanto aos labels eu já tinha trocado mesmo.
Muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)