How to fix endless print cycle error in Nevrona Rave

Nevrona Designs Rave Reports is a Report Engine for using the Embarcadero Delphi IDE.

This is what I call the Rave Endless Loop error. Rave reports version 6.5.0 (VCL10), which ships with Delphi 2006, has a nortorious bug that affects many Rave report developers. If you have a non-empty data set, and the data lines for this data set exactly fit in (that is, there are zero widow lines), then after PrintPreview, Rave gets stuck in endless page generation cycles.

This issue was previously reported in this newsgroup under the following headings:

  • "error: creating endless pages"; Hugo Hiram 09/20/2006 8:44 PM
  • "Rave loop error. Please help."; Thomas Lazar 07/07/2006 19:35
  • "Loop on a full data page?"; Tony Chistinsen 12/23/2004 3:41 pm
  • a response to (3) by another applicant; Oliver Peach
  • "Endless lopp print error"; Richso 11/11/2004 4:44 PM

In each of these messages there was no response from Nevrona, and no decision was communicated.

Perhaps the problem was also reported in the union news group (nevrona.public.rave.reports.general), namely: 6. "Constantly compiling a report"; Jobard 11/20/2005 Although it is not clear to me if (6) is a Rave Endless loop error or other problem. This message received a response from Nevrona, but it was more in relation to several regions ("There is a problem when using multiple areas that go to page break.") Than the widow zero problem.

+4
source share
4 answers

This is more of a job than a true decision. I first published this work in the Nevrona news group (Group = nevrona.public.rave.developer.delphi.rave; Subject = "Do you suffer from a Rave Endless Loop error ?: Turnover announced."; Date = 11/13/2006 7: 06 PM)

So here is my solution. This is more of a job than a good long-term solution, and I hope that Nevrona will give this issue some serious attention in the near future.

  • Based on your specific report layout, calculate the maximum number of lines per page. Say it's 40.
  • Set a counter to count the rows on the page (as opposed to the rows in the whole report). You can do this either using the script event, or using the CalcTotal component.
  • Define the OnBeforePrint scripting engine for the main data range.
  • In this case, the handler sets the FinishNewPage property of the main data range to True if the number of rows per page is one or two below the maximum (in our example, this will be 38). And set it to False in all other cases. The effect of this is to give each page a non-zero number of widows (in this case 1..38), thereby avoiding the condition causing the Rave Endless loop problem.
+2
source

Thank you very much for this Sean - unfortunately, this will not work for me, but I came up with a different solution ... You see that I have a note in the upper part of the region, which can expand or decrease depending on the number of notes that the user left in the database. This means that the number of lines that can fit on a page is changing. But. there is another solution - you are using the MaxHeightLeft property for the database. All you do is measure the height of your database, multiply it by 2 and put it in your own MaxHeightLeft object. This will force 1 or 2 entries to go to the next page if it is full.

+1
source

Thank you very much, this thread helps me to solve my problem with the infinite print cycle in Nevrona Rave .... I set MinHeightLeft to .500, this parameter works, but I'm not sure if it will work for another result set of my query report.

0
source

Teacher, Solution - MinHeightLeft up to 0,500, I use the property retreat area in true and generated a loop in the second print, but when the MinHeightLeft property is changed to 0,500, the error disappears.

Thanks!

Atte Fabiola Herrera. Fabi_ucv@hotmail.com

0
source

Source: https://habr.com/ru/post/1276723/


All Articles