Ir para conteúdo
  • Cadastre-se

dev botao

Relatório FortesReport composto (mais de uma tabela)


Ver Solução Respondido por leandroaoa,
  • Este tópico foi criado há 1208 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Prezados,

Preciso construir um relatório que mostre os detalhes de uma consulta totalizados por grupo, isso é fácil. Porém, no final do grupo (Sumário) relatório preciso mostrar os totais agrupados por categoria.

Não é simplesmente o somatório de uma ou mais colunas, isso é fácil, mas o total agrupado por um valor específico de cada item. 

Pensei em criar uma tabela temporária para ir agrupando os totais de acordo com os registros (categorias) dos ítens.

Não sei como fazer isso (mostrar os itens dessa tabela temporária), como se fosse um novo relatório dentro do Summary. Seria como um subrelatório pegando detalhes de outro dataset.

Lazarus+Zeos+FortesReportCE

 

Exemplo.txt

Link para o comentário
Compartilhar em outros sites

  • Solution

boa tarde

basta colocar rlgroup dentro do outro ai o primeiro o datafields = categorias aqui coloca uma band sumary que vai somar o tota da categoria

no segundo datafields = grupo aqui voce colocaria a band rldetail para apresentar o itens a banda sumary que seria soma dos itens

no index da sua tabela deve esta categoria, grupo

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 07/07/2021 at 16:46, leandroaoa disse:

boa tarde

basta colocar rlgroup dentro do outro ai o primeiro o datafields = categorias aqui coloca uma band sumary que vai somar o tota da categoria

no segundo datafields = grupo aqui voce colocaria a band rldetail para apresentar o itens a banda sumary que seria soma dos itens

no index da sua tabela deve esta categoria, grupo

Desse jeito os detalhes precisam estar ordenados por categoria subtotalizando (summary) cada uma ao seu término para apresentar o total geral no final, certo?. Assim eu já tinha feito, mas  o cliente quer que os registros apareçam na ordem que entram no banco de dados, assim não ficam organizados pela categoria. O subtotal acontece quando muda a data e é aqui que preciso mostrar cada categoria com seu respectivo subtotal e o mesmo no final do relatório com o total geral.

Fiz uma tabela temporário para ir somando os valores o que pode ser feito também com uma query para os subtotais/totais mas não sei como posso imprimir esses detalhes no summary.

 

Link para o comentário
Compartilhar em outros sites

41 minutos atrás, Edson Alves disse:

Desse jeito os detalhes precisam estar ordenados por categoria subtotalizando (summary) cada uma ao seu término para apresentar o total geral no final, certo?. Assim eu já tinha feito, mas  o cliente quer que os registros apareçam na ordem que entram no banco de dados, assim não ficam organizados pela categoria. O subtotal acontece quando muda a data e é aqui que preciso mostrar cada categoria com seu respectivo subtotal e o mesmo no final do relatório com o total geral.

Fiz uma tabela temporário para ir somando os valores o que pode ser feito também com uma query para os subtotais/totais mas não sei como posso imprimir esses detalhes no summary.

 

Cria o relatorio na munheca mesmo. pode ser assim coloca o band btColumnHeader um rlmemo e passa os dados na munheca 

while not detalhes.Eof do

begin

rlmemo1.lines.add(detalhes.fieldbyname(data).asstring+' '+detalhes.fieldbyname('nome').asstring+' '+detalhes.fieldbyname('valor').asstring);

detalhes.next;

end;

rlmemo1.lines.add('TOTAL R$ '+lTotal);

coloca outra band btColumnHeader um rlmemo

while not categoria.Eof do

begin

rlmemo2.lines.add(categoria.fieldbyname('nome').asstring+' '+categoria.fieldbyname('valor').asstring);

categoria.next;

end;

rlmemo2.lines.add('TOTAL R$ '+lTotalCat);

seria mais ou menos isso estou sem delphi aqui eu uso muito isso para formulario de contrato 

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, leandroaoa disse:

Cria o relatorio na munheca mesmo. pode ser assim coloca o band btColumnHeader um rlmemo e passa os dados na munheca 

while not detalhes.Eof do

begin

rlmemo1.lines.add(detalhes.fieldbyname(data).asstring+' '+detalhes.fieldbyname('nome').asstring+' '+detalhes.fieldbyname('valor').asstring);

detalhes.next;

end;

rlmemo1.lines.add('TOTAL R$ '+lTotal);

coloca outra band btColumnHeader um rlmemo

while not categoria.Eof do

begin

rlmemo2.lines.add(categoria.fieldbyname('nome').asstring+' '+categoria.fieldbyname('valor').asstring);

categoria.next;

end;

rlmemo2.lines.add('TOTAL R$ '+lTotalCat);

seria mais ou menos isso estou sem delphi aqui eu uso muito isso para formulario de contrato 

Leandro, primeiramente obrigado pela dica. Já fiz isso também outras vezes e pensei nessa solução, inclusive fiz um relatório usando o TRichMemo para atender essa demanda mas os recursos limitados deixam o relatório com layout prejudicado, mas é o que temos pra hoje. 

 

Link para o comentário
Compartilhar em outros sites

57 minutos atrás, Edson Alves disse:

Leandro, primeiramente obrigado pela dica. Já fiz isso também outras vezes e pensei nessa solução, inclusive fiz um relatório usando o TRichMemo para atender essa demanda mas os recursos limitados deixam o relatório com layout prejudicado, mas é o que temos pra hoje. 

 

Cara da pra fazer tudo na munheca voce pode fazer o layout que quiser da uma olhada no ACBrNFeDANFe é todo feito na munheca eu mesmo faco diversos layout de contrato tudo assim 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1208 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...