Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Problema com CompositeReport e band ColumnHeader


danielrgoes

Question

Boa tarde.

Tenho um programa que tem vários Quick Report, sendo que um deles busca informações de uma tabela e as mostra com a QRBand do tipo Detail.

Quando eu imprimo apenas este Quick Report que busca essas informações da tabela, ele imprime corretamente.

Porém, necessito imprimir vários dos meus Quick Reports e utilizo o componente CompositeReport. Ao adicionar o que usa Details, se eu o adiciono no início de tudo dá certo, porém se eu o adiciono no meio ou no final dos Quick Reports, ele mostra a QRBand do tipo Column Header (que deveria ficar apenas acima da Detail) logo após a minha Page Header e também acima da Detail, ficando duplicada.

Alguém sabe dizer por que isso ocorre? E como eu soluciono sem ter que colocar esse Quick Report como primeiro?

 

Estrutura das QRBands do meu Quick Report (como deveria ficar):

* Page Header

* Title

* Column Header

* Detail

* Summary

 

Obrigado.

Edited by danielrgoes
Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

exemplo:

Os 2 reports tem todas as bandas que voce mencionou

procedure TForm1.QRCompositeReport1AddReports(Sender: TObject);
begin
   ///  JUNTAR REPORTS 

   with QRCompositeReport1 do
     begin
         Add(QRClientes);
         Add(QRProf);
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   /// MOSTRAR REPORT INDIVIDUAL

   Cadcli_IB.Active := false;
   CDS_Cadcli.Active := false;
   Cadcli_IB.Active := true;
   CDS_Cadcli.Active := true;
   CDS_Cadcli.Refresh;

   try
     if QRClientes = Nil then
        QRClientes := TQRClientes.Create(self);
   except
        ShowMessage('Erro na criação do relatório!!');
        exit;
   end;
   QRClientes.Preview;


   /// MOSTRAR REPORT INDIVIDUAL

   CadProf_IB.Active := false;
   CDS_CadProf.Active := false;
   CadProf_IB.Active := true;
   CDS_CadProf.Active := true;
   CDS_CadProf.Refresh;

   try
       if QRProf = Nil then
       QRProf := TQRProf.Create(self);
   except
       ShowMessage('Erro na criação do relatório!!');
       exit;
   end;
   QRProf.preview;

   
   ///  MOSTRAR REPORTS JUNTOS
  
   QRCompositeReport1.Prepare;
   QRCompositeReport1.Preview;
end;

OBS: o titulo do segundo report vai sair colocado ao final do primeiro.

Se voce quiser , na propriedade OnEndPage do primeiro report, voce coloca o codigo abaixo  para o titulo do segundo reporte, sair em nova pagina quando ajuntar os 2.  ( faça isso para os demais tambem )

// primeiro report
procedure TQuickReport1.QuickRepEndPage(Sender: TCustomQuickRep);
begin
   QuickReport1.ForceNewPage;
end;

Lembrando: A estrutura desses reports são:

* Title

* Page Header

* Column Header

* Detail

* Summary

abraço

Link to post
Share on other sites
  • 0

Boa tarde, Jhonas.

Obrigado pela resposta, porém não é exatamente este o problema que está acontecendo no meu programa.

Eu tenho os seguintes reports a serem impressos:

* Curva

* Folha de Dados

* Vista Explodida (duas vezes)

O meu report de Vista Explodida tem a estrutura da Imagem 1, quando eu imprimo ele sozinho, ele mostra corretamente esta estrutura, porém quando utilizo o CompositeReport, com os outros Reports (com diferentes estruturas), ele aparece conforme a Imagem 2, duplicando a ColumnHeader antes da minha Title.

image.png.320b8e3eade22fed6f3829868f52d757.png

image.png.70ea255b995d00ce141258fb23e3e974.png

 

Quando eu dou o "AddReports", eu faço o SELECT no banco de dados dos itens que devem aparecer no primeiro report de Vista Explodida.

No "StartPage" do meu report de Vista Explodida, eu atribuo alguns valores de labels que estão na minha Title.

No "AfterPrint" da Band do tipo rbSummary, eu faço o SELECT no banco dos dados dos itens que devem aparecer no próximo report de Vista Explodida (já que é chamado duas vezes).

Tentei de tudo, mas o único jeito que encontrei de não acontecer a Imagem 2, foi colocando os meus reports de Vista Explodida antes dos demais, porém os usuários não querem esta ordem.

 

Obrigado.

Link to post
Share on other sites
  • 0

ok... esqueci de perguntar, qual é a versão do seu QuickReport  ?

estou usando a versão 5.02 ... fiz um teste aqui com reports que tinham as mesmas bandas, e funcionou corretamente.

A única coisa que está diferente do seu, é que o meu report começa com a banda Title e depois as outras.

abraço

 

 

Link to post
Share on other sites
  • 0

Bom dia, Jhonas.

Meu QuickReport é versão 4.

A ordem entre as bandas Title e PageHeader, eu não consigo mudar, ao alterar o tipo da QRBand, ele já deixa na ordem citada automaticamente.

Não entendi porque meu post ficou marcado como resolvido, se ainda continuo com o problema (removi a marcação ainda em busca de ajuda).

No aguardo.

Obrigado.

Edited by danielrgoes
Link to post
Share on other sites
  • 0

Marquei seu post como resolvido, porque achei que voce não iria responder....( como acontece com tantos outros, onde eu repondo a dúvida e não tenho o retorno  ou resposta ... isso indica para mim que a dúvida foi resolvida ... ok ? )

A ordem entre as bandas Title e PageHeader, eu não consigo mudar, ao alterar o tipo da QRBand, ele já deixa na ordem citada automaticamente.

Não sei se é bug da sua versão, mas para contornar esse problema, voce deve tirar todas as bandas do quickreport, salva-lo sem as bandas e fecha-lo.

Depois voce deve abrir novamente o quickreport, e incluir as bandas novamente uma a uma, começando pelo Title.

Mas ai voce vai perguntar.... se eu fizer isso, nou vou perder todos os componentes que estão na banda.?

Sim... por isso voce deve criar uma cópia de cada report.

Abra o report Original ( que tem toda a codificação mas sem as bandas )

Depois inclua as bandas do report ( da cópia ) uma a uma, começando pelo Title

Refaça os links das procedures que forem necessários e depois salve o report.

OBS: Se voce tentar mudar a posição das bandas somente pelas proriedades do objeto, não vai dar muito certo.

abraço

 

 

 

 

Link to post
Share on other sites
  • 0

Bom dia, Jhonas.

Ah entendi, acabei demorando para responder o tópico, mas estou realmente com esse problema ainda... = [

Sobre a ordem das bandas Title e PageHeader, para mim está ok, não tem problema, só comentei porque você tinha citado que no seu exemplo estava igual exceto por isto.

Quanto ao problema de mostrar a ColumnHeader duplicada quando uso o CompositeReport, você tem mais alguma dica?

Porque aqui realmente não está funcionando a menos que eu coloque este QuickReport para imprimir antes dos outros (coisa que o usuário não quer...).

Obrigado.

Link to post
Share on other sites
  • 0

Voce pode fazer um teste simples no seu delphi com o quickreport

abra um novo aplicativo

 coloque um botão e um QRCompositeReport no Form

crie 3 quickreports ( QuickReport2, QuickReport3 e QuickReport4

coloque em cada um deles as seguintes bands:

No QuickReport2:

PageHeader
Title
ColumnHeader
Detail
Summary
PageFooter

e coloque um Label em cada uma das bands com os nomes de cada band

QRLabel1.Caption := PageHeader;

QRLabel2.Caption := Title;

QRLabel3.Caption := ColumnHeader;

QRLabel4.Caption := Detail;

QRLabel5.Caption := Summary;

QRLabel6.Caption := PageFooter;

Faça a mesma coisa nos demais, mudando somente o final de cada Label

No QuickReport3:

QRLabel1.Caption := PageHeader 1;

QRLabel2.Caption := Title 1;

QRLabel3.Caption := ColumnHeader 1;

QRLabel4.Caption := Detail 1;

QRLabel5.Caption := Summary 1;

QRLabel6.Caption := PageFooter 1;

No QuickReport4:

QRLabel1.Caption := PageHeader 2;

QRLabel2.Caption := Title 2;

QRLabel3.Caption := ColumnHeader 2;

QRLabel4.Caption := Detail 2;

QRLabel5.Caption := Summary 2;

QRLabel6.Caption := PageFooter 2;

No botão voce põe o codigo:

uses  Unit2, Unit3, Unit4;

{$R *.dfm}

procedure TForm1.QRCompositeReport1AddReports(Sender: TObject);
begin
   ///  JUNTAR REPORTS

   with QRCompositeReport1.Reports do
     begin
         Add(QuickReport2);
         Add(QuickReport3);
         Add(QuickReport4);
     end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   ///  MOSTRAR REPORTS JUNTOS

   QRCompositeReport1.Prepare;
   QRCompositeReport1.Preview;

end;

Execute o código , se o resultado for

PageHeader
Title
Detail
Summary

Title 1
Detail 1
Summary 1

Title 2
Detail 2
Summary 2

PageFooter 2

OBS: veja que apareçe o PageHeader do QuickReport2 mas não o ColumnHeader dele, nem o PageHeader  e  o ColumnHeader do QuickReport3 e nem o PageHeader  e  o ColumnHeader do QuickReport4

Por fim aparece somente o PageFooter 2 que é do QuickReport4.

Ou voce muda a estrutura do QuickReport em relação as Bands ou cria uma rotina para imprimir todos os relatórios de uma só vez.

abraço

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644509
×
×
  • Create New...