Fórum QUICKREPORT COM VÁRIOS DETAILS #375111

21/09/2009

0

bom dia....

preciso fazer um relatorio com o seguinte formato de bandas:


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

[b:0b47326d1a]banda title:[/b:0b47326d1a]
RELATÓRIO

[b:0b47326d1a]banda column header 1:[/b:0b47326d1a]
QUEBRA PROCEDIMENTOS

[b:0b47326d1a]banda detail 1:[/b:0b47326d1a]
PROCEDIMENTO 1
PROCEDIMENTO 2
PROCEDIMENTO 3

[b:0b47326d1a]banda column header 2:[/b:0b47326d1a]
QUEBRA HONORARIOS

[b:0b47326d1a]banda detail 2:[/b:0b47326d1a]
HONORARIO 1
HONORARIO 2
HONORARIO 3

[b:0b47326d1a]banda column header 3:[/b:0b47326d1a]
QUEBRA DIVERSOS

[b:0b47326d1a]banda detail 3:[/b:0b47326d1a]
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....


Rodrigo.zanferrari

Rodrigo.zanferrari

Responder

Posts

21/09/2009

Diegotiemann

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??


Não. Até aonde eu sei isso não é possível.


Responder

Gostei + 0

21/09/2009

Rodrigo.zanferrari

sugestao de como proceder??


Responder

Gostei + 0

21/09/2009

Diegotiemann

Uma maneira seria fazer com agrupamento.

Dai você teria que usar UNION pra retornar todos os registros no mesmo data set.
E no before print das bandas tu ajusta a posição dos teus componentes.

É bem trabalhoso, mas funciona.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar