Как исправить ошибку с бесконечным циклом печати в Nevrona Rave

StackOverflow https://stackoverflow.com/questions/68929

Вопрос

Дизайн Nevrona' Восторженные Репортажи является механизмом создания отчетов для использования Embarcadero's Дельфы IDE.

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

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

  1. "ошибка:создание бесконечных страниц";Хьюго Хайрам 20/9/2006, 8:44 вечера
  2. "Ошибка в цикле рейва.Пожалуйста, помогите".;Томас Лазар 07.11.2006, 19:35
  3. "Зацикливаться на полной странице данных?";Тони Кристиансен 23/12/2004, 15:41
  4. ответ на (3) другого заявителя;Оливер Пиче
  5. "Бесконечная ошибка печати lopp";Richso 11.09.2004 16:44 ВЕЧЕРА

На каждое из этих сообщений не было ответа от Nevrona, и не было сообщено о решении .

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Спасибо!

Привет Фабиола Эррера.Fabi_ucv@hotmail.com

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top