Как исправить ошибку бесконечного цикла печати в Nevrona Rave - PullRequest
4 голосов
/ 16 сентября 2008

Nevrona Designs ' Rave Reports - механизм отчетов для использования Embarcadero Delphi IDE.

Это то, что я называю багом Rave Endless Loop. В восторженных отчетах версия 6.5.0 (VCL10), которая поставляется в комплекте с Delphi 2006, есть печально известная ошибка, от которой страдают многие разработчики отчетов Rave. Если у тебя есть непустой набор данных, и строки данных для этого набора данных точно вписываются в страница (то есть есть ноль строк вдов), а затем в PrintPreview, Rave застрянет в бесконечном цикле, генерирующем страницы.

Об этой проблеме ранее сообщалось в этой группе новостей под следующие заголовки:

  1. «ошибка: генерирование бесконечных страниц»; Хьюго Хирам 20.09.2006 20:44
  2. «Ошибка Rave Loop. Пожалуйста, помогите»; Томас Лазар 07.11.2006 19:35 * 10101 *
  3. «Цикл на полной странице данных?»; Тони Кристиансен 23/12/2004 3:41 PM
  4. ответ на (3) другого заявителя; Оливер Пиче
  5. «Бесконечная ошибка печати lopp»; Ричсо 11/11/2004 4:44 PM

В каждой из этих публикаций не было никакого ответа от Неврона, и нет Решение было сообщено.

Возможно, о проблеме также сообщалось в союзной группе новостей (nevrona.public.rave.reports.general), а именно: 6. «Постоянно генерирующий отчет»; Джобард 20/11/2005 Хотя мне не ясно, является ли (6) ошибкой цикла Rave Endless или другая проблема. Эта публикация получила ответ от Неврона, но это было больше по отношению к нескольким регионам («Существует проблема при использовании несколько регионов, которые выходят за разрыв страницы. "), чем проблема нуля вдовы.

Ответы [ 4 ]

2 голосов
/ 16 сентября 2008

Это скорее обходной путь, чем настоящее решение. Я впервые опубликовал этот обходной путь в новостной группе Nevrona (Group = nevrona.public.rave.developer.delphi.rave; Subject = "Вы страдаете от ошибки Rave Endless Loop ?: Объявлено обходное решение."; Date = 13 / 11/2006 19:06)

Так вот мое решение. Это скорее обходной путь, чем хороший долгосрочное решение, и я надеюсь, что Неврона даст этому вопросу некоторые серьезное внимание в ближайшее время.

  1. Учитывая ваш конкретный макет отчета, подсчитайте максимальное количество строк на страницу. Допустим, это 40.
  2. Установите счетчик для подсчета строк на странице (в отличие от строк во всем отчете). Это можно сделать либо с помощью сценария события, либо с помощью компонента CalcTotal.
  3. Определить обработчик событий OnBeforePrint со сценарием для основной полосы данных.
  4. В этом обработчике события задайте для свойства FinishNewPage основной полосы данных значение True, если число строк на страницу на один или два ниже максимума (в нашем примере это будет 38). И установите его в False во всех остальных случаях. Результатом этого является присвоение каждой странице ненулевого числа вдов (в данном случае 1..38), что позволяет избежать условия, приводящего к проблеме цикла Rave Endless.
1 голос
/ 24 января 2009

Большое спасибо за этого Шона - к сожалению, это не сработало бы для меня, но я нашел другое решение ... Вы видите, что у меня есть заметка в верхней части региона, которая может расширяться или сжиматься в зависимости от того, сколько заметок оставил пользователь в базе данных. Это означает, что количество строк, которые могут поместиться на странице, варьируется. Тем не мение. Есть и другое решение - вы используете свойство MaxHeightLeft для базы данных. Все, что вы делаете, это измеряете высоту вашей базы данных, умножаете ее на 2 и помещаете это в ваше свойство MaxHeightLeft. Это заставит 1 или 2 записи перейти на следующую страницу, если она заполнится так сильно.

0 голосов
/ 22 июня 2010

Мастер, Решением является MinHeightLeft до 0,500, я использую область свойства расточительства в true и генерирует цикл во втором отпечатке, но при изменении свойства MinHeightLeft до 0,500 ошибка исчезает.

Спасибо!

Atte Фабиола Эррера. Fabi_ucv@hotmail.com

0 голосов
/ 12 июля 2009

спасибо большое, этот поток помогает мне решить мою проблему с бесконечным циклом печати в Nevrona Rave ...., я установил MinHeightLeft на 0,500, этот параметр работает, но я не уверен, что он будет работать для другого результата набор моего запроса отчета.

...