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

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

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

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

  1. «ошибка: создание бесконечных страниц»; Хьюго Хирам 20.09.2006 20:44
  2. «Ошибка Rave loop. Пожалуйста, помогите»; Томаш Лазар 07.11.2006 19:35
  3. «Зациклить на полной странице данных?»; Тони Чистиансен 23 декабря 2004 г., 15:41
  4. ответ на (3) другого истца; Оливер Пиш
  5. «Ошибка бесконечной печати с лоппером»; Richso 11.09.2004 16:44

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

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


person Community    schedule 16.09.2008    source источник
comment
Поучительно отметить, что Rave больше даже не включен в Delphi XE3.   -  person Warren P    schedule 15.11.2012


Ответы (4)


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

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

  1. Учитывая ваш конкретный макет отчета, подсчитайте максимальное количество строк на странице. Допустим, это 40.
  2. Настройте счетчик для подсчета строк на странице (в отличие от строк во всем отчете). Это можно сделать либо с помощью сценария события, либо с помощью компонента CalcTotal.
  3. Определите обработчик событий со сценарием OnBeforePrint для основного канала данных.
  4. В этом обработчике событий для свойства FinishNewPage основного канала данных устанавливается значение True, если количество строк на странице на одну или две меньше максимального значения (в нашем примере это будет 38). И установите значение False во всех остальных случаях. В результате на каждой странице появляется ненулевое количество окон (в данном случае 1..38), что позволяет избежать условия, которое приводит к возникновению проблемы бесконечного цикла Rave.
person Sean B. Durkin    schedule 16.09.2008
comment
Похоже, я должен придерживаться быстрых отчетов. - person Johan Bresler; 07.10.2008
comment
Этому вопросу и ответу много лет, и с тех пор Rave Reports, возможно, изменились. Я могу говорить только о Rave Reports, как это было в 2008 году. Я не могу ничего сказать о текущем состоянии Rave Reports. Как и в 2008 году, это единственный известный обходной путь. - person Sean B. Durkin; 01.08.2012

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

person Community    schedule 23.01.2009

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

person Community    schedule 12.07.2009

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

Спасибо !

Атте Фабиола Эррера. [email protected]

person Community    schedule 22.06.2010