Pergunta

Nevrona Designs Relatórios de rave é um mecanismo de relatório para uso por Embarcadero Delfos IDE.

Isso é o que chamo de bug Rave Endless Loop.No Rave Reports versão 6.5.0 (VCL10) que vem com o Delphi 2006, há um bug notório que atormenta muitos desenvolvedores de relatórios e raves.Se você tiver um conjunto de dados não vazios e as linhas de dados para esse conjunto de dados se encaixam exatamente em uma página (ou seja, não há zero linhas de viúvas), depois no PrintPreview, a rave ficará presa em um loop infinito páginas de geração.

Este problema foi relatado anteriormente neste grupo de notícias sob os seguintes títulos:

  1. "erro:gerando páginas infinitas";Hugo Hiram 20/9/2006 20h44
  2. "Bug de loop rave.Por favor ajude";Tomas Lazar 07/11/2006 19h35
  3. "Loop em página inteira de dados?";Tony Chistiansen 23/12/2004 15h41
  4. resposta a (3) por outro reclamante;Oliver Piche
  5. "Bug de impressão lopp sem fim";Richso 11/09/2004 16h44

Em cada uma dessas postagens, não houve resposta de Nevrona e nenhuma solução foi relatada.

Possivelmente, o problema também foi relatado em um grupo de notícias aliado (nevrona.public.rave.reports.general), a saber:6.“Gerando relatório continuamente”;Jobard 20/11/2005 Embora não esteja claro para mim se (6) for o insensível insensível bug do loop ou outro problema.Essa postagem recebeu uma resposta do Nevrona, mas foi mais em relação a várias regiões ("há um problema ao usar várias regiões que passam por um quebra de página") do que o problema de zero viúvas.

Foi útil?

Solução

Isso é mais uma solução alternativa do que uma solução verdadeira.Publiquei pela primeira vez esta solução alternativa no grupo de notícias Nevrona (Group=nevrona.public.rave.developer.delphi.rave;Subject="Você está sofrendo do bug Rave Endless Loop?:Solução alternativa anunciada.";Data=13/11/2006 19h06)

Então aqui está minha solução.É mais uma solução alternativa do que uma boa solução de longo prazo, e espero que Nevrona dê a essa questão uma atenção séria em um futuro próximo.

  1. Dado o seu layout de relatório específico, conte o número máximo de linhas por página.Digamos que isso seja 40.
  2. Configure um contador para contar as linhas da página (em oposição às linhas de todo o relatório).Você poderia fazer isso por script de evento ou por um componente CalcTotal.
  3. Defina um manipulador de eventos com script OnBeforePrint para a banda de dados principal.
  4. Neste manipulador de eventos, defina a propriedade FinishNewPage da banda de dados principal como True quando a contagem de linhas por página estiver uma ou duas abaixo do máximo (em nosso exemplo, seria 38).E defina-o como False em todos os outros casos.O efeito disso é dar a cada página um número diferente de zero de viúvas (neste caso 1..38), evitando assim a condição que dá origem ao problema do loop Rave Endless.

Outras dicas

Muito obrigado por isso, Sean - infelizmente isso não funcionaria para mim, mas encontrei outra solução ...Veja, tenho um memorando no topo da região que pode expandir ou contrair dependendo de quantas notas o usuário deixou no banco de dados.Isso significa que o número de linhas que cabem em uma página varia.No entanto.existe outra solução - você usa a propriedade MaxHeightLeft de uma banda de dados.Tudo o que você faz é medir a altura da sua banda de dados, multiplicá-la por 2 e colocar isso na sua propriedade MaxHeightLeft.Isso forçará 1 ou 2 registros para a próxima página se ela ficar muito ocupada.

muito obrigado, este tópico me ajuda com meu problema com loop de impressão infinito em Nevrona Rave ...., configurei MinHeightLeft para 0,500, essa configuração funciona, mas não tenho certeza se funcionará para outro conjunto de resultados do meu relatório de consulta.

Mestre, a solução é MINHELEFT a 0.500, eu uso a área de resíduos do Property Wastefit em verdadeiro e gerei o loop na segunda impressão, mas quando alterei a propriedade MINHELEFT para 0.500 o erro Discapar.

Obrigado !

Atte Fabiola Herrera.Fabi_ucv@hotmail.com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top