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

时间:2020-03-05 18:55:02  来源:igfitidea点击:

Nevrona Designs的Rave Reports是一个供Embarcadero的Delphi IDE使用的报告引擎。

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

此问题先前已在此新闻组的"报告"下报告。
以下标题:

  • "错误:生成无限页";雨果·希兰20/9/2006 8:44 PM
  • " Rave循环错误。请帮忙"; Tomas Lazar 2006年11月7日下午7:35
  • "在整页数据上循环?";托尼·奇斯蒂安森23/12/2004 3:41 PM
  • 另一申诉人对(3)的答复;奥利弗·皮切(Oliver Piche)
  • "无尽的lopp打印错误"; Richso 2004年9月11日下午4:44

在上述每个帖子中,Nevrona都没有回应,也没有
解决方案已报告。

可能在同一个新闻组中也报告了该问题
(nevrona.public.rave.reports.general),机智:
6."持续生成报告";乔巴德20/11/2005
尽管我不清楚(6)是Rave Endless loop bug还是
另一个问题。该帖子的确收到了内夫罗纳(Nevrona)的回覆,但是
关于多个区域的更多信息("使用时出现问题
分页符的多个区域。")而不是零问题
寡妇。

解决方案

回答

这不是真正的解决方案,而是更多解决方法。我首先在Nevrona新闻组(Group = nevrona.public.rave.developer.delphi.rave; Subject ="我们是否受到Rave Endless Loop bug的困扰? 2006年11月11日下午7:06)

所以这是我的解决方案。与其说是一个好的解决方案,不如说是一种变通方法
长期解决方案,我希望内夫罗纳(Nevrona)可以为这个问题提供一些解决方案
在不久的将来会引起高度重视。

  • 根据特定报告布局,计算每页的最大行数。让我们说这是40。
  • 设置一个计数器来对页面中的行进行计数(而不是整个报表中的行)。我们可以通过事件脚本或者CalcTotal组件执行此操作。
  • 为主数据段定义一个OnBeforePrint脚本化事件处理程序。
  • 在此事件处理程序中,当每页行数小于最大值(在我们的示例中为38)时,将主数据段的FinishNewPage属性设置为True。在其他所有情况下,将其设置为False。这样做的效果是使每个页面的寡妇数量不为零(在本例中为1..38),从而避免了引起Rave Endless循环问题的情况。

回答

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

回答

非常感谢,此线程帮助我摆脱了Nevrona Rave中无休止的打印循环问题..,我将MinHeightLeft设置为0,500,此设置有效,但我不确定它是否可以用于其他结果集查询报告。

回答

掌握,
解决的方法是将MinHeightLeft设置为0,500,我使用true设置了astefitfit区域并在第二个打印中生成了循环,但是当将MinHeightLeft属性更改为0,500时,错误消失了。

谢谢 !

阿特
法比奥拉·埃雷拉(Fabiola Herrera)。
[email protected]