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

Relatório - Pular para próxima página (Fortes Report)


robinhocne

Pergunta

Estou Fazendo um relatório do meu caixa e nele mostro varias tipos, tipo o do caixa, de contas a receber, de vendas, contas a pagar e conta bancaria...

mas ele só aparece até o limite da pagina (da primeira), como eu faço para que quando chegar no fim do relatório (os dados) eu faço que ele pule para a próxima página?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Estou Fazendo um relatório do meu caixa e nele mostro varias tipos, tipo o do caixa, de contas a receber, de vendas, contas a pagar e conta bancaria...

mas ele só aparece até o limite da pagina (da primeira), como eu faço para que quando chegar no fim do relatório (os dados) eu faço que ele pule para a próxima página?

Se voce estiver usando uma banda de detalhe, os registros excedentes serão mostrados em uma nova pagina

ou se quiser determinar quantos registros deverão ter na pagina, voce deve criar uma condição para tal, usando o evento OnPrint do campo que quer controlar usando um contador

exemplo:

procedure TQRRelAnual.QRDBText3Print(sender: TObject; var Value: String);
begin
    a := a + 1;
    if a = 20 then
       begin 
          QRRelAnual.ForceNewPage;
          a := 0;
       end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Estou Fazendo um relatório do meu caixa e nele mostro varias tipos, tipo o do caixa, de contas a receber, de vendas, contas a pagar e conta bancaria...

mas ele só aparece até o limite da pagina (da primeira), como eu faço para que quando chegar no fim do relatório (os dados) eu faço que ele pule para a próxima página?

Se voce estiver usando uma banda de detalhe, os registros excedentes serão mostrados em uma nova pagina

ou se quiser determinar quantos registros deverão ter na pagina, voce deve criar uma condição para tal, usando o evento OnPrint do campo que quer controlar usando um contador

exemplo:

procedure TQRRelAnual.QRDBText3Print(sender: TObject; var Value: String);
begin
    a := a + 1;
    if a = 20 then
       begin 
          QRRelAnual.ForceNewPage;
          a := 0;
       end;

end;
olhei aqui mas não tenho essa propriedade no fortes report e na hora de contar linha eu teria que contar quando eu estou criando ele em tempo de execução ? ou no relatorio ? Uma coisa que estive reparando essa noite...... Primeiro acho que o fortes report está com alguns erros: pois se se puxo até o final a bando de details ele pula outra pagina e fica o cabeçalho em uma e os dados pela metade em outra.... esse é o codigo que estou montado...
// criando controle do Caixa

        {Inicio do Cabecalho}

   // controle
   LbRelatCaixa := TRLLabel.Create(nil);
   with LbRelatCaixa do
     begin
       Name      := 'LbRelatCaixa';
       top       := TopCaixa + 50;
       left      := 250;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       //Align     := faCenter;
       AutoSize  := true;
       width     := 54;
       Caption   := 'CONTROLE DO CAIXA';
       Parent    := FrmRelCaixa.RLBand2;
     end;
   // separador
   LbSepCaixa := TRLLabel.Create(nil);
   with LbSepCaixa do
     begin
       Name      := 'LbSepCaixa';
       top       := TopCaixa + 56;
       left      := 4;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := '----------------------------------------------------------------------------------------';
       Parent    := FrmRelCaixa.RLBand2;
     end;
    // controle
   LbCxCont := TRLLabel.Create(nil);
   with LbCxCont do
     begin
       Name      := 'LbCxCon';
       top       := TopCaixa + 65;
       left      := 4;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := 'CONT';
       Parent    := FrmRelCaixa.RLBand2;
     end;
     // historico
   LbCxHist := TRLLabel.Create(nil);
   with LbCxHist do
     begin
       Name      := 'LbCxHist';
       top       := TopCaixa + 65;
       left      := 40;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := 'HISTÓRICO / CLIENTE';
       Parent    := FrmRelCaixa.RLBand2;
     end;
     // descricao
   LbCxDesc := TRLLabel.Create(nil);
   with LbCxDesc do
     begin
       Name      := 'LbVCxDesc';
       top       := TopCaixa + 65;
       left      := 300;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := 'DESCRIÇÃO';
       Parent    := FrmRelCaixa.RLBand2;
     end;
     // Valor
   LbCxValo := TRLLabel.Create(nil);
   with LbCxValo do
     begin
       Name      := 'LbCxValo';
       top       := TopCaixa + 65;
       left      := 647;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := 'VALOR';
       Parent    := FrmRelCaixa.RLBand2;
     end;
     // FATURADO
   LbCxTipo := TRLLabel.Create(nil);
   with LbCxTipo do
     begin
       Name      := 'LbCxTipo';
       top       := TopCaixa + 65;
       left      := 700;
       Font.Size := 10;
       Font.Name := 'Courier New';
       Height    := 20;
       AutoSize  := true;
       width     := 54;
       Caption   := 'T';
       Parent    := FrmRelCaixa.RLBand2;
     end;

        {Fim do Cabecalho}

        {Inicio da Pesquisa do Caixa}

  with DtmLoja.QryCaixa do
    begin
      close;
      sql.Clear;
      sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#39 + 'E' + #39', '#39 + 'S' + #39')');
      ParamByName('DtIni').AsDate := TxtDtIni.Date;
      open;
    end;

    TotCaixa := DtmLoja.QryCaixa.RecordCount;

    for PC := 1 to TotCaixa do
      begin
          // controle
         CxCont := TRLLabel.Create(Self);
         with CxCont do
           begin
             Name      := 'CxCont' + IntToStr( PC );
             top       := TopCaixa + 60 + (PC*20);
             left      := 4;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := false;
             width     := 40;
            // Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;
           // cliente
         CxHist := TRLLabel.Create(Self);
         with CxHist do
           begin
             Name      := 'CxHist' + IntToStr( PC );
             top       := TopCaixa + 60 + (PC*20);
             left      := 40;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := false;
             width     := 165;
          //   Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;
           // descricao
         CxDesc := TRLLabel.Create(Self);
         with CxDesc do
           begin
             Name      := 'CxDesc' + IntToStr( PC );
             top       := TopCaixa + 60 + (PC*20);
             left      := 200;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := false;
             width     := 410;
           //  Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;
           // Valor
         CxValo := TRLLabel.Create(Self);
         with CxValo do
           begin
             Name      := 'CxValo' + IntToStr( PC );
             top       := TopCaixa + 60 + (PC*20);
             left      := 600;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Alignment := taRightJustify;
             Height    := 20;
             AutoSize  := false;
             width     := 100;
           //  Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;
           // FATURADO
         CxTipo := TRLLabel.Create(Self);
         with CxTipo do
           begin
             Name      := 'CxTipo' + IntToStr( PC );
             top       := TopCaixa + 60 + (PC*20);
             left      := 700;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := false;
             width     := 16;
           //  Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;

        TopRec := TopCaixa + 60 + (PC*20);

      end;

        if TopRec = TotCaixa then
          begin
            TopRec := TopCaixa + 40;
          end;

        PulaCaixa := 0;
     while (not DtmLoja.QryCaixa.Eof) do
        begin
          PulaCaixa := PulaCaixa + 1;
          if PulaCaixa <= TotCaixa then
            begin
              TRLLabel ( FindComponent ( 'CxCont' + IntToStr ( PulaCaixa ) ) ).Caption := DtmLoja.QryCaixa.FieldByName('Controle').AsString;
              TRLLabel ( FindComponent ( 'CxHist' + IntToStr ( PulaCaixa ) ) ).Caption := DtmLoja.QryCaixa.FieldByName('Historico').AsString;
              TRLLabel ( FindComponent ( 'CxDesc' + IntToStr ( PulaCaixa ) ) ).Caption := DtmLoja.QryCaixa.FieldByName('Descricao').AsString;
              TRLLabel ( FindComponent ( 'CxValo' + IntToStr ( PulaCaixa ) ) ).Caption := FormatFloat('##,##0.00', DtmLoja.QryCaixa.FieldByName('Valor').AsCurrency);
              TRLLabel ( FindComponent ( 'CxTipo' + IntToStr ( PulaCaixa ) ) ).Caption := DtmLoja.QryCaixa.FieldByName('Tipo').AsString;
            end;
          DtmLoja.QryCaixa.Next;
        end;

         LbCxTotal := TRLLabel.Create(nil);
         with LbCxTotal do
           begin
             Name      := 'LbCxTotal';
             top       := TopRec + 40;
             left      := 400;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := true;
             Font.Style := [fsbold];
           //  Borders.DrawRight := true;
             Caption   := 'Total do Caixa : ';
             Parent    := FrmRelCaixa.RLBand2;
           end;

           // Total
         CxTotal := TRLLabel.Create(Self);
         with CxTotal do
           begin
             Name      := 'CxTotal';
             top       := TopRec + 40;
             left      := 600;
             Font.Size := 10;
             Font.Name := 'Courier New';
             Height    := 20;
             AutoSize  := false;
             Font.Style := [fsbold];
             width     := 130;
           //  Borders.DrawRight := true;
             Caption   := '';
             Parent    := FrmRelCaixa.RLBand2;
           end;

        {fim da pesquisa do caixa}

  with DtmLoja.QryCaixa do
    begin
      close;
      sql.Clear;
      sql.Add('Select sum(Valor) as "Entrada" From caixa Where DtPgto = :DtIni and Tipo = ('#39 + 'E' + #39')');
      ParamByName('DtIni').AsDate := TxtDtIni.Date;
      open;
    end;

    Entrada := DtmLoja.QryCaixa.FieldByName('Entrada').AsCurrency;

  with DtmLoja.QryCaixa do
    begin
      close;
      sql.Clear;
      sql.Add('Select sum(Valor) as "Saida" From caixa Where DtPgto = :DtIni and Tipo = ('#39 + 'S' + #39')');
      ParamByName('DtIni').AsDate := TxtDtIni.Date;
      open;
    end;

    Saida := DtmLoja.QryCaixa.FieldByName('Saida').AsCurrency;

    Total := Entrada - Saida;

  TRLLabel ( FindComponent ( 'CxTotal' ) ).Caption := FormatFloat('##,##0.00',Total);
uma outra coisa na instrução sql eu verifico quantos campos está sendo retornados para montar o relatorio certo, mas estava verificando e não deu muito certo. fiz dessa maneira:
with DtmLoja.QryCaixa do
    begin
      close;
      sql.Clear;
      sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#39 + 'E' + #39', '#39 + 'S' + #39')');
      ParamByName('DtIni').AsDate := TxtDtIni.Date;
      open;
    end;

    TotCaixa := DtmLoja.QryCaixa.RecordCount;

ai minha variavel inteiro recebe o Total da pesquisa, mas está retornado errado do que tenho salvo!

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

  • 0
1 = olhei aqui mas não tenho essa propriedade no fortes report

e na hora de contar linha eu teria que contar quando eu estou criando ele em tempo de execução ?

ou no relatorio ?

2 = Uma coisa que estive reparando essa noite......

Primeiro acho que o fortes report está com alguns erros:

pois se se puxo até o final a banda de details ele pula outra pagina e fica o cabeçalho em uma e os dados pela metade em outra....

Resposta 1 - O TRLLabel deve ter uma propriedade de impressão ( tipo OnPrint ). Como voce está criando campos em tempo de execução, somente poderá ser adicionado o codigo, após a criação do componente .. eu costumo usar no proprio relatorio.

Resposta 2 - é extamente isto que acontece quando voce estica a banda de detail. ( o ideal é manter apenas a distancia de uma linha ( Height := 20 ) ) onde os campos serão alinhados.

experimente:

sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('E', 'S' )');

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
1 = olhei aqui mas não tenho essa propriedade no fortes report

e na hora de contar linha eu teria que contar quando eu estou criando ele em tempo de execução ?

ou no relatorio ?

2 = Uma coisa que estive reparando essa noite......

Primeiro acho que o fortes report está com alguns erros:

pois se se puxo até o final a banda de details ele pula outra pagina e fica o cabeçalho em uma e os dados pela metade em outra....

Resposta 1 - O TRLLabel deve ter uma propriedade de impressão ( tipo OnPrint ). Como voce está criando campos em tempo de execução, somente poderá ser adicionado o codigo, após a criação do componente .. eu costumo usar no proprio relatorio.

Resposta 2 - é extamente isto que acontece quando voce estica a banda de detail. ( o ideal é manter apenas a distancia de uma linha ( Height := 20 ) ) onde os campos serão alinhados.

experimente:

sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('E', 'S' )');

abraço

mas como eu tinha citado nessa linha que eu estou achando estranho:

with DtmLoja.QryCaixa do
    begin
      close;
      sql.Clear;
      sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#39 + 'E' + #39', '#39 + 'S' + #39')');
      ParamByName('DtIni').AsDate := TxtDtIni.Date;
      open;
    end;

    TotCaixa := DtmLoja.QryCaixa.RecordCount;

[b]
ai minha variavel inteiro recebe o Total da pesquisa, mas está retornado errado do que tenho salvo![/[/b]code][/quote]

assim não deu certo!

[code]sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('E', 'S' )');
só dessa maneira:
sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#39 + 'E' + #39', '#39 + 'S' + #39')');

mas o porque será que o meu RecordCount está voltando o valor errado ?

Link para o comentário
Compartilhar em outros sites

  • 0
experimente

sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#37 + 'E' + #37', '#37 + 'S' + #37')');

acho que #39 é a posição mais a direita e #37 é a posição mais a esquerda ... ve o que dá.

Mas por exemplo do jeito que você colocou aqui eu não achei essa propriedade no na banda e nem no label do relatorio e nenhum parecido!

QRRelAnual.ForceNewPage;
Mas o que eu quero de ajuda para relacionar esse problema é que eu estou montando esse relatorio em tempo de execução porque tentei fazer do jeito que eu quero que vou detalhar em baixo....
Controle de Vendas
-----------------------------------------------------
Venda      Qtde  Valor Unitário       Valor Total
00001        2        20,00                40,00
00002        1        59,90                59,90
00003        3        49,90               149,70   

Valor Total : R$ 249,60


                             Controle do Caixa
---------------------------------------------------------------------
Controle  Descrição                            Tipo    Valor
000001    Recebimento da Venda - 000001         E      40,00
000002    Recebimento da Parcela - 01/000003    E      35,90
000003    Vale - Func.: Robinho de Morais       S      50,00

Valor Total : R$ 25,90

Então é assim em uma relatório vou estar mostrando varios detalhes, mas só consegui colocar 1 para detalhar...

Como no Fortes Report eu faço isso ?????

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

  • 0
Então é assim em uma relatório vou estar mostrando varios detalhes, mas só consegui colocar 1 para detalhar...

Como no Fortes Report eu faço isso ?????

para usar mais de um detalhe no fortes, faço assim ... para cada SubDetail uso uma query diferente (concerteza você faz dessa forma também), e em tempo de execução ligo o datasource na band subdetail

RLSubDetail1.DataSource := dsImpItens;

faça isso para cada subdetail.

falow

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
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...