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

时间:2008-09-16 02:34:38

标签: delphi infinite-loop rave-reports

Nevrona Designs' Rave ReportsEmbarcadero's Delphi IDE使用的报告引擎。

这就是我所说的Rave Endless Loop错误。在Rave Reports中 与Delphi 2006捆绑在一起的6.5.0版(VCL10),有一个 困扰许多Rave报告开发者的臭名昭着的臭虫。如果你有 非空数据集,此数据集的数据行完全符合a 页面(也就是说没有寡行),然后在PrintPreview上, Rave将陷入无限循环生成页面。

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

  1. “错误:生成无限页面”; Hugo Hiram 20/9/2006 8:44 PM
  2. “Rave loop bug。请帮忙”; Tomas Lazar 11/07/2006 7:35 PM
  3. “循环整页数据?”; Tony Chistiansen 23/12/2004 3:41 PM
  4. 另一位投诉人回复(3);奥利弗·皮切
  5. “无尽的lopp打印错误”; Richso 9/11/2004 4:44 PM
  6. 在每个帖子中,Nevrona都没有回复,没有 报道了解决方案。

    可能还有一个联盟新闻组报道了这个问题 (nevrona.public.rave.reports.general),以及: 6.“不断产生报告”; Jobard 20/11/2005 虽然我不清楚是否(6)是Rave Endless循环错误或 另一个问题。这篇帖子确实得到了Nevrona的答复,但确实如此 更多与多个地区有关(“使用时出现问题 超过分页符的多个区域。“)比零问题 寡妇。

4 个答案:

答案 0 :(得分:2)

这更像是一种解决方案而非真正的解决方案。我首先在Nevrona新闻组上发布了这个解决方法(Group = nevrona.public.rave.developer.delphi.rave; Subject =“你是否患有Rave Endless Loop错误?:解决方案宣布。”;日期= 13 / 11/2006 7:06 PM)

所以这是我的解决方案。它更像是一种解决方案,而不是一种好的方式 长期的解决方案,我希望Nevrona会给这个问题一些 在不久的将来会引起严重关注。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

谢谢!

ATTE 法比奥拉·埃雷拉。 Fabi_ucv@hotmail.com