Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Relatório Duplicado


Ruyfreis

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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.....

Editado por Ruyfreis
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...