Jump to content
Fórum Script Brasil
  • 0

[resolvido] Relatório Duplicado


Ruyfreis
 Share

Question

Ola Pessoal... Estou com um probleminha em um relatório no Quick Report....

O relatório deve ser em meia pagina.. Ok é so diminuir o Height.. mas o problema é que deve sair duas vezes na mesma FOLHA....

Tem como fazer isso???

Um Forte abraço...

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Guest --Jonas --
Ola Pessoal... Estou com um probleminha em um relatório no Quick Report....

O relatório deve ser em meia pagina.. Ok é so diminuir o Height.. mas o problema é que deve sair duas vezes na mesma FOLHA....

Tem como fazer isso???

Um Forte abraço...

Se voce estier usando uma impressora matricial é facil ( é so definir o tamhanho da folha ) mas se for jato de tinta voce tem que duplicar os campos na outra metade do Quick Report ( isto porque na impressora jato de tinta a folha sera ejetada mesmo que imprima metade da folha ).

Link to comment
Share on other sites

  • 0

Ok.. isso eu já tinha pensado .. mas... Como que eu vou duplicar as bandas... sendo que um folha so pode ter um Head, um Footer, um Detail....

Ou existe alguma forma???... se você souber posta aii.. please.... meu chefe ta me apertando nisso....

Muito Obrigado...

Valeuuu.....

Edited by Ruyfreis
Link to comment
Share on other sites

  • 0
Guest --Jonas --
Ok.. isso eu já tinha pensado .. mas... Como que eu vou duplicar as bandas... sendo que um folha so pode ter um Head, um Footer, um Detail....

Ou existe alguma forma???... se você souber posta aii.. please.... meu chefe ta me apertando nisso....

Muito Obrigado...

Valeuuu.....

Amigo. engano seu ... voce pode colocar quantas bandas voce quiser, entretanto dependendo de como sera a disposição do impresso é que voce deve escolher qual a disposição das bandas e dos componentes a serem usados ... vamos imaginar o seguinte exemplo : uma duplicata. a meneira de montar fica um tanto trabalhosa pois você vai usar apenas uma banda de titulo que devera ser esticada ate o final da pagina, nesta banda voce colocara os componentes QRLabel ( Titulos ), QRDbText ( para os campos da tabela ), QRShape ( Desenhos ) , etc ..., então você monta a duplicata usando ate o meio da folha. uma vez acabado seleciona-se todos os componetes, copia-se e cola-se na parte de baixo da banda , faz-se os ajustes necessarios e está pronto.

Outra maneira que usei sem fazer isto, foi o controle da impressão dos componentes que deu muito mais trabalho e ficaria inviavel te explicar como.

Link to comment
Share on other sites

  • 0

Ruyfreis, uma outra maneira, seria definir a banda detalhe ocupando metade da folha (ou um pouco menos), colocar todos os TQRLabel's e TQRText's necessários - exatamente como qualquer relatório.

Entretanto, você não liga a propriedade Dataset do QuickReport ao seu dataset (Table ou Query), ou seja, deixa esta propriedade "em brando".

Então, você define uma variável na sessão private do seu form (do relatório) para controlar quantas vezes você imprimirá o registro em questão. Inicializa ele antes da impressão (BeforePrint) e manipula (incrementa e testa) no evento OnNeedData do QuickRep:

type
  TRelatorio = class....
    ...
  public
    procedure ShowPreview;
  private
    QtImpresso :byte;
  end;

implementation
...
// supondo a existência de um procedimento que mostre seu relatório...
procedure TRelatorio.ShowPreview;
begin
  QryConsulta.Open;
  QuickRep1.Preview;
  QryConsulta.Close;
end;

procedure TRelatorio.Quickrep1BeforePrint(Sender :TObject);
begin
  QtImpresso := 0;
end;

procedure TRelatorio.Quickrep1NeedData(Sender :TObject; var NeedData :boolean);
begin
 // incrementa o contador de impressão
  Inc(QtImpresso);
 // NeedData dirá ao quickreport ainda há dados a serem impressos, enquanto QtImpresso não for 2
  NeedData :=  QtImpresso < 2;
end;
Quando manipulamos o evento OnNeedData, o quickreport não controla mais o avanço do dataset (por isso, não definimos a respectiva propriedade no mesmo) - nós temos que controlar este avanço na mão. Enquanto não avançarmos o dataset (via método Next), a cada vez que setarmos o parâmetro NeedData para TRUE, as informações referentes ao registro atual serão repetidos. Assim, no exemplo acima, enquanto QtImpresso não for 2, ele repitirá a impressão dos dados sem qualquer alteração. Para o caso de uma impressão de "n" registros do dataset, onde tenham que ser impressos, para cada um, duas cópias, então deve ser gerenciado o posicionamento e avanço do dataset nos eventos mencionados.
procedure TRelatorio.Quickrep1BeforePrint(Sender :TObject);
begin
  QryConsulta.First;  // posiciona no primeiro registro do dataset
  QtImpresso := 0;
end;

procedure TRelatorio.Quickrep1NeedData(Sender :TObject; var NeedData :boolean);
begin
 // incrementa o contador de impressão
  Inc(QtImpresso);
 // NeedData dirá ao quickreport ainda há dados a serem impressos, enquanto QtImpresso não for 2
  NeedData :=  QtImpresso < 2;
 // se NeedData é falso, sinal que já foram impressos as duas cópias
  if not NeedData then
  begin
   // tentamos avançar ao próximo registro
    QryConsulta.Next;
   // verificamos se há mais registros a imprimir
    if not QryConsulta.EOF then
    begin
     // há o que imprimir, então reiniciamos o contador e ajustamos o retorno do parâmetro
      QtImpresso := 0;
      NeedData := True;
    end;
  end;
end;

Seria algo mais ou menos assim, apenas escrevi o código nos eventos, não o testei.

No caso de impressão de apenas o registro atual (apenas um), haveria ainda a opção de utilizar um TQRComposite.

Você cria o relatório normalmente e adiciona a ele o componente TQRComposite. Então, você inclui na lista Reports do composite o seu QuickRep1 duas vezes e chama o preview deste componente. Veja este post.

O TQRComposite tem a finalidade de agregar relatórios.

Abraços

Link to comment
Share on other sites

  • 0

Noosssaaaa... Valeu mesmo michels.. alem de você ter resolvido meu problema.. deu pra aprender muita coisa que eu tinha curiosidade... heh.. muito obrigado mesmooooo....

o que eu achei que vai me salvar é o do post com o TQRComposite...

brigado mesmooo.. você sempre me salvando..heheheh

brigaduu...

Link to comment
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.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...