Forçar o QR a não deixar informação dividida em 2 páginas
Olá fórum,
Eu tava aqui tentando fazer uma coisa que ainda não vi jeito.
Num relatório, eu tenho uma banda Detail, uma ChildBand e aí vem os subdetails.
O lance é que um cliente não quer que fique metade de uma informação em uma página e a outra metade na página seguinte. Então, o que eu precisava era que ficassem na mesma página a Detail, a Child e todos os subdetails. Claro que quando são mtos subdetails, ele acaba colocando alguns em uma página e outros em outra. E é justamente isso que eu queria evitar! Precisava encontrar uma forma de fazer o Quick Report prever quando não vai caber na página, e assim, jogar tudo para a outra página. Será que existe uma forma de fazer isso?
Uma ´solução´ que eu encontrei foi limitar o número de details por página... vou contando, e quando der X, forço a passar pra outra página. Mas o problema é que fixar seria muito ruim já que nem todas as details tem o mesmo tanto de subdetails.
Eh isso.
Existe alguma forma de fazer o QR fazer essa previsão?
Obrigada.
Eu tava aqui tentando fazer uma coisa que ainda não vi jeito.
Num relatório, eu tenho uma banda Detail, uma ChildBand e aí vem os subdetails.
O lance é que um cliente não quer que fique metade de uma informação em uma página e a outra metade na página seguinte. Então, o que eu precisava era que ficassem na mesma página a Detail, a Child e todos os subdetails. Claro que quando são mtos subdetails, ele acaba colocando alguns em uma página e outros em outra. E é justamente isso que eu queria evitar! Precisava encontrar uma forma de fazer o Quick Report prever quando não vai caber na página, e assim, jogar tudo para a outra página. Será que existe uma forma de fazer isso?
Uma ´solução´ que eu encontrei foi limitar o número de details por página... vou contando, e quando der X, forço a passar pra outra página. Mas o problema é que fixar seria muito ruim já que nem todas as details tem o mesmo tanto de subdetails.
Eh isso.
Existe alguma forma de fazer o QR fazer essa previsão?
Obrigada.
Moonlight
Curtidas 0
Respostas
Gabriel Hilbig
16/02/2004
Some X + SubDetail.DataSet.RecordCount
em BeforePrint;
Se Exceder o Tamanho da Página use Método
ForceNewPage.
em BeforePrint;
Se Exceder o Tamanho da Página use Método
ForceNewPage.
GOSTEI 0
Moonlight
16/02/2004
Ploft! a dica valeu demais, brigada.
Ficou assim:
onde TamanhoTotal e PaginaAnterior são variaveis globais que são zeradas imediatamente antes do relatório começar a ser gerado... e 660 é um valor que acabei descobrindo no chute. Na verdade, 670 dava, mas por segurança...
Brigada!
Ficou assim:
procedure TSAP33X50.QRB_DETAILBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); var TamanhoAtual: Integer; begin TamanhoAtual:= QRB_DETAIL.Height + ChildBand2.Height + GroupFooterBand1.Height + (QRSubDetail1.Height * QRSubDetail1.Dataset.RecordCount); if ((PaginaAnterior <> 0) and (PaginaAnterior=QR_SAP33X50.PageNumber)) then begin if (TamanhoAtual + TamanhoTotal > 660) then QR_SAP33X50.NewPage; end; if ((PaginaAnterior<>QR_SAP33X50.PageNumber) and (PaginaAnterior <> 0)) then TamanhoTotal:=0 else TamanhoTotal := TamanhoTotal + TamanhoAtual; PaginaAnterior:= QR_SAP33X50.PageNumber; end;
onde TamanhoTotal e PaginaAnterior são variaveis globais que são zeradas imediatamente antes do relatório começar a ser gerado... e 660 é um valor que acabei descobrindo no chute. Na verdade, 670 dava, mas por segurança...
Brigada!
GOSTEI 0
Wmcaetani
16/02/2004
:( O problema de todo o cliente é querer q o programador resolva tudo, as vezes é mais fácil colocar uma outra impressora ou mexer no HardWare invés de adaptar o Soft ou tentar ficar fazendo malabarismos de programação para resolver o problema. :roll:
GOSTEI 0