Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigo.zanferrari

Quickreport com vários details

Recommended Posts

bom dia....

 

preciso fazer um relatorio com o seguinte formato de bandas:

 

 

========================================

 

banda title:

RELATÓRIO

 

banda column header 1:

QUEBRA PROCEDIMENTOS

 

banda detail 1:

PROCEDIMENTO 1

PROCEDIMENTO 2

PROCEDIMENTO 3

 

banda column header 2:

QUEBRA HONORARIOS

 

banda detail 2:

HONORARIO 1

HONORARIO 2

HONORARIO 3

 

banda column header 3:

QUEBRA DIVERSOS

 

banda detail 3:

DIVERSO 1

DIVERSO 2

DIVERSO 3

 

========================================

 

não estou conseguindo colocar vários column headers/details no mesmo rel.... so aparece o primeiro column header e o primeiro detail.... alguem sabe pq?? isso seria possivel??

 

obs:

- todos os dados sao lidos de objetos da tela que chama o rel, e nao de dataset.... preciso que o rel seja montado praticamente de forma dinamica....

- ja tentei desabilitar as bandas, mudar a altura das que nao estao sendo usadas, etc.... nada funcionou....

 

segue o codigo:

 

procedure TqrpRelAuditoriaTxt.QuickRepNeedData(Sender: TObject; 
  var MoreData: Boolean); 
begin 
  if LinhaProcedimento <= frmRelAuditoriaTxt.ngProcedimento.RowCount - 1 then 
  begin 
    MoreData := true; 

    qrbColumnHeaderProcedimento.Height := 56; 
    qrbColumnHeaderHonorario.Height := 0; 
    qrbColumnHeaderDiverso.Height := 0; 
    qrbDetailProcedimento.Height := 56; 
    qrbDetailHonorario.Height := 0; 
    qrbDetailDiverso.Height := 0; 

    qrbDetailProcedimento.Enabled := true; 
    qrbDetailHonorario.Enabled := false; 
    qrbDetailDiverso.Enabled := false; 

    frmRelAuditoriaTxt.ngProcedimento.SelectedRow := LinhaProcedimento; 
    frmRelAuditoriaTxt.ngProcedimentoSelectCell(Self, 0, LinhaProcedimento); 

    qrlProcedimentoCodigo.Caption := frmRelAuditoriaTxt.ngProcedimento.Cell[1, LinhaProcedimento].AsString; 

    qrlProcedimentoUnitarioOriginal.Caption  := frmRelAuditoriaTxt.edtProcUniOri.Text; 
    qrlProcedimentoQtdeOriginal.Caption      := frmRelAuditoriaTxt.edtProcQtdeOri.Text; 
    qrlProcedimentoTotalOriginal.Caption     := frmRelAuditoriaTxt.edtProcValorOri.Text; 
    qrlProcedimentoTaxaOriginal.Caption      := frmRelAuditoriaTxt.edtProcTaxaOri.Text; 
    qrlProcedimentoGeralOriginal.Caption     := frmRelAuditoriaTxt.edtProcTotOri.Text; 

    qrlProcedimentoUnitarioGlosado.Caption   := FormatFloat(PtBRFloat, StrToFloatDef(frmRelAuditoriaTxt.edtProcUniAut.Text, 0)   + StrToFloatDef(frmRelAuditoriaTxt.edtProcUniMan.Text, 0)); 
    qrlProcedimentoQtdeGlosado.Caption       := IntToStr(StrToIntDef(frmRelAuditoriaTxt.edtProcQtdeAut.Text, 0) + StrToIntDef(frmRelAuditoriaTxt.edtProcQtdeMan.Text, 0)); 
    qrlProcedimentoTotalGlosado.Caption      := FormatFloat(PtBRFloat, StrToFloatDef(frmRelAuditoriaTxt.edtProcValorAut.Text, 0) + StrToFloatDef(frmRelAuditoriaTxt.edtProcValorMan.Text, 0)); 
    qrlProcedimentoTaxaGlosado.Caption       := FormatFloat(PtBRFloat, StrToFloatDef(frmRelAuditoriaTxt.edtProcTaxaAut.Text, 0)  + StrToFloatDef(frmRelAuditoriaTxt.edtProcTaxaMan.Text, 0)); 
    qrlProcedimentoGeralGlosado.Caption      := FormatFloat(PtBRFloat, StrToFloatDef(frmRelAuditoriaTxt.edtProcTotAut.Text, 0)   + StrToFloatDef(frmRelAuditoriaTxt.edtProcTotMan.Text, 0)); 

    qrlProcedimentoUnitarioResultado.Caption := frmRelAuditoriaTxt.edtProcUniFin.Text; 
    qrlProcedimentoQtdeResultado.Caption     := frmRelAuditoriaTxt.edtProcQtdeFin.Text; 
    qrlProcedimentoTotalResultado.Caption    := frmRelAuditoriaTxt.edtProcValorFin.Text; 
    qrlProcedimentoTaxaResultado.Caption     := frmRelAuditoriaTxt.edtProcTaxaFin.Text; 
    qrlProcedimentoGeralResultado.Caption    := frmRelAuditoriaTxt.edtProcTotFin.Text; 

    Inc(LinhaProcedimento); 
  end 
  else if LinhaHonorario <= frmRelAuditoriaTxt.ngHonorario.RowCount - 1 then 
  begin 
    MoreData := true; 

    qrbColumnHeaderProcedimento.Height := 0; 
    qrbColumnHeaderHonorario.Height := 56; 
    qrbColumnHeaderDiverso.Height := 0; 
    qrbDetailProcedimento.Height := 0; 
    qrbDetailHonorario.Height := 56; 
    qrbDetailDiverso.Height := 0; 

    qrbDetailProcedimento.Enabled := false; 
    qrbDetailHonorario.Enabled := true; 
    qrbDetailDiverso.Enabled := false; 

    qrlHonorarioCodigo.Caption := 'honorario'; 

    Inc(LinhaHonorario); 
  end 
  else if LinhaDiverso <= frmRelAuditoriaTxt.ngDiversos.RowCount - 1 then 
  begin 
    MoreData := true; 

    qrbColumnHeaderProcedimento.Height := 0; 
    qrbColumnHeaderHonorario.Height := 0; 
    qrbColumnHeaderDiverso.Height := 56; 
    qrbDetailProcedimento.Height := 0; 
    qrbDetailHonorario.Height := 0; 
    qrbDetailDiverso.Height := 56; 

    qrbDetailProcedimento.Enabled := false; 
    qrbDetailHonorario.Enabled := false; 
    qrbDetailDiverso.Enabled := true; 

    qrlDiversoCodigo.Caption := 'diverso'; 

    Inc(LinhaDiverso); 
  end 
  else 
  begin 
    MoreData := false; 
    Abort; 
  end; 
end; 

 

 

obrigado....

 

rodrigo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu relatório lê algum dado vindo de uma query ou tabela ou captura tudo diretamente da tela? Se ele não faz acesso ao BD para ser formado, você pode montar tudo usando os QrLabel dentro de uma banda só, organizando item a item como os mesmos serão apresentados.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você possa montar a estrutura que quer usando alguns QrGroup para agrupar as informações... estou sem delphi aqui no trampo para testar algo assim agora.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.