如何修复 Nevrona Rave 中的无限打印循环错误

发布于 2024-07-04 23:40:44 字数 1213 浏览 9 评论 0原文

Nevrona Designs Rave Reports 是供 Embarcadero 的 Delphi IDE。

这就是我所说的 Rave Endless Loop bug。 在狂欢报告中 版本 6.5.0 (VCL10) 与 Delphi 2006 捆绑在一起,有一个 困扰许多 Rave 报告开发人员的臭名昭著的错误。 如果你有一个 非空数据集,并且该数据集的数据行完全适合 页(也就是说,寡行数为零),然后在 PrintPreview 上, Rave 会陷入无限循环生成页面。

此问题之前已在此新闻组中报道过 以下标题:

  1. “错误:生成无限页面”; Hugo Hiram 20/9/2006 8:44PM
  2. “Rave 循环错误。请帮忙”; Tomas Lazar 11/07/2006 7:35PM
  3. “循环整页数据?”; Tony Chistiansen 23/12/2004 3:41PM
  4. 另一投诉人回复(3); Oliver Piche
  5. “无尽的 lopp 打印错误”; Richso 9/11/2004 4:44PM

在这些帖子中,Nevrona 没有做出任何回应,也没有 报告了解决方案。

联合新闻组可能也报道了该问题 (nevrona.public.rave.reports.general),即: 6、“持续生成报告”; 乔巴德 20/11/2005 虽然我不清楚 (6) 是否是 Rave Endless 循环 bug 或者 另一个问题。 这篇文章确实得到了 Nevrona 的回复,但它是 更多与多个区域相关(“使用时存在问题 多个区域会出现分页符。”)而不是零问题 寡妇。

Nevrona Designs' Rave Reports is a Report Engine for use by Embarcadero's Delphi IDE.

This is what I call the Rave Endless Loop bug. In Rave Reports
version 6.5.0 (VCL10) that comes bundled with Delphi 2006, there is a
nortorious bug that plagues many Rave report developers. If you have a
non-empty dataset, and the data rows for this dataset fit exactly into a
page (that is to say there are zero widow rows), then upon PrintPreview,
Rave will get stuck in an infinite loop generating pages.

This problem has been previously reported in this newsgroup under the
following headings:

  1. "error: generating infinite pages"; Hugo Hiram 20/9/2006 8:44PM
  2. "Rave loop bug. Please help"; Tomas Lazar 11/07/2006 7:35PM
  3. "Loop on full page of data?"; Tony Chistiansen 23/12/2004 3:41PM
  4. reply to (3) by another complainant; Oliver Piche
  5. "Endless lopp print bug"; Richso 9/11/2004 4:44PM

In each of these postings, there was no response from Nevrona, and no
solution was reported.

Possibly, the problem has also been reported on an allied newsgroup
(nevrona.public.rave.reports.general), to wit:
6. "Continuously generating report"; Jobard 20/11/2005
Although it is not clear to me if (6) is the Rave Endless loop bug or
another problem. This posting did get a reply from Nevrona, but it was
more in relation to multiple regions ("There is a problem when using
multiple regions that go over a page-break.") than the problem of zero
widows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

十六岁半 2024-07-11 23:40:44

这更多的是一种解决方法,而不是真正的解决方案。 我首先在 Nevrona 新闻组上发布了此解决方法(Group=nevrona.public.rave.developer.delphi.rave;Subject=“您是否患有 Rave Endless Loop bug?:解决方法已公布。”;Date=13 /11/2006 7:06 PM)

这是我的解决方案。 这更多的是一种解决方法而不是一个好的方法
长期解决方案,我希望 Nevrona 能给这个问题一些帮助
近期要引起高度重视。

  1. 根据您的特定报告布局,计算最大行数
    每页。 假设这是 40。
  2. 设置一个计数器来计算页面中的行数(而不是整个报表中的行数)。 您可以通过事件脚本或 CalcTotal 组件来完成此操作。
  3. 为主数据带定义 OnBeforePrint 脚本化事件处理程序。
  4. 在此事件处理程序中,当每页行计数低于最大值一或二时(在我们的示例中为 38),将主数据带的 FinishNewPage 属性设置为 True。 在所有其他情况下将其设置为 False。 这样做的效果是为每个页面提供非零数量的寡妇(在本例中为 1..38),从而避免出现 Rave 无限循环问题的情况。

This is more of a work-around than a true solution. I first posted this work-around on the Nevrona newsgroup (Group=nevrona.public.rave.developer.delphi.rave; Subject="Are you suffering from the Rave Endless Loop bug?: Work-around announced."; Date=13/11/2006 7:06 PM)

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

  1. Given your particular report layout, count the maximum number of rows
    per page. Let us say that this is 40.
  2. Set up a counter to count the rows within the page (as opposed to rows within the whole report). You could do this either by event script or by a CalcTotal component.
  3. Define an OnBeforePrint scripted event handler for the main data band.
  4. In this event handler set the FinishNewPage property of the main data band to be True when the row-per-page count is one or two below the max (in our example, this would be 38). And set it to False in all other cases. The effect of this is to give every page a non-zero number of widows (in this case 1..38), thus avoiding the condition that gives rise to the Rave Endless loop problem.
儭儭莪哋寶赑 2024-07-11 23:40:44

非常感谢,这个线程帮助我解决了 Nevrona Rave 中无限打印循环的问题......,我将 MinHeightLeft 设置为 0,500,这个设置是有效的,但我不确定它是否适用于我的其他结果集查询报告。

thank's a lot, this thread helps me out from my problem with endless printing loop in Nevrona Rave...., I set MinHeightLeft to 0,500, this setting is work but i'm not sure that it will work for anothers result set of my query report.

给我一枪 2024-07-11 23:40:44

非常感谢肖恩 - 不幸的是这对我不起作用,但我想出了另一个解决方案......
您会看到,我在该区域的顶部有一个备忘录,该备忘录可能会根据用户在数据库中留下的注释数量而扩展或收缩。 这意味着一页上可以容纳的行数会有所不同。
然而。 还有另一种解决方案 - 您使用数据带的 MaxHeightLeft 属性。
您要做的就是测量数据带的高度,将其乘以 2,然后将其放入 MaxHeightLeft 属性中。 如果下一页已满,这将强制将 1 或 2 条记录移至下一页。

Thanks so much for this Sean - unfortunately this wouldn't work for me but I came up with another solution...
You see I have a memo at the top of the region that might expand or contract depending on how many notes the user has left in the database. This means that the number of rows that can fit on a page varies.
However. there is another solution - you use the MaxHeightLeft property of a databand.
All you do is measure the height of your databand, multiply it by 2, and put this in your MaxHeightLeft property. This will force 1 or 2 records onto the next page if it fills up that much.

唔猫 2024-07-11 23:40:44

掌握,
解决方案是将 MinHeightLeft 更改为 0,500 ,我在 true 中使用属性 Wastefit Area 并在第二次打印中生成循环,但是当将属性 MinHeightLeft 更改为 0,500 时,错误消失。

谢谢 !

阿特
法比奥拉·埃雷拉。
[电子邮件受保护]

Master,
The solution is MinHeightLeft to 0,500 , i use property wastefit area in true and generated the loop in the second print, but when changed the property MinHeightLeft to 0,500 the error disapear.

Thanks !

Atte
Fabiola Herrera.
[email protected]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文