Dúvidas na elaboração de Relatório - QuickReport
Saudações,
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.
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
Curtidas 0
Respostas
Cabelo
31/07/2006
Em que momento exatamente vc está mostrando a soma...
qual o evento?????
qual o evento?????
GOSTEI 0
Zooropa
31/07/2006
Saudações amigo,
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?
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
Zooropa
31/07/2006
Gente,
alguém pode mes ajudar nisso? :(
alguém pode mes ajudar nisso? :(
GOSTEI 0
Micheus
31/07/2006
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).
Parece-me que esta query não está acompanhando a uf impressa no GroupHeader. Como vc está manipulando esta consulta? Ela está ligada a principal via datasource? Está passando a uf como parâmetro e abrindo ela a cada before print do GroupHeader?GOSTEI 0
Zooropa
31/07/2006
Saudações Michel,
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.
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
Micheus
31/07/2006
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.
[b:9c85479e8c]Zooropa[/b:9c85479e8c], essa query, ela é parametrizada? Acredito que uma vez que ela totaliza as informações ref. a tbFatura, a cada fatura impressa (GroupHeader) essa query deveria ser fechada, atualizados os parâmetros que farão o relacionamento com a fatura e novamente aberta. Isto pode ser feito no AfterPrint do GroupHeader.GOSTEI 0
Zooropa
31/07/2006
Saudações Micheus,
cara, obrigado pela ajuda, realmente era a ausência de parâmetros. Fiz o seguinte como vc me orientou:
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.
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
Micheus
31/07/2006
[b:80033d5779]Zooropa[/b:80033d5779], só a título de otimização, acho que vc poderia:
1) no OnCreate do form do seu relatório adcionar esta parte do código:Essas linhas passam a ser executadas um única vez durante o processo de geração do seu relatório.
2) no AfterPrint do Group, apenas:
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:
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
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
Zooropa
31/07/2006
Saudações cara,
valeu pela dica, já fiz a modificação na query. Quanto aos labels eu já tinha trocado mesmo.
Muito obrigado.
valeu pela dica, já fiz a modificação na query. Quanto aos labels eu já tinha trocado mesmo.
Muito obrigado.
GOSTEI 0