Повторные отчеты Crystal Reports, основанные на параметре - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть отчет с 4 отдельными вложенными отчетами. В основном отчете у меня есть параметр для фильтрации по группам, и он настроен на фильтрацию по группам, если вы не выберете All для параметра, тогда он покажет все группы.

If {?Main Group Name} = "ALL" then {Incident.Group Name} like "*"
else {Incident.Group Name} = {?Main Group Name}

Эта настройка фильтра прекрасно работает с отдельными вложенными отчетами, однако, если я запускаю ее, выбирая «все» как часть основной группы, она вызывает бесконечный цикл листа и не отображает данные должным образом.

Данные находятся во всех заголовках группы 1 и нижнем колонтитуле группы 1, поэтому в идеале одна и та же страница (как показано ниже) должна повторяться для каждой группы.
Correct view for 1 group

Когда я запускаю его для всех, он работает ненормально долго и должен быть остановлен вручную, иначе он просто продолжает работать. После ручной остановки я получаю следующее. Похоже, он пытается отобразить все группы друг на друге.

enter image description here enter image description here

Кто-нибудь знает, что может вызвать это?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

[Вставка ответа add'l, поскольку он достаточно отчетлив, чтобы гарантировать его собственную запись.]

Мне кажется, я понимаю диаграммы заголовка / ноги группы.
Вы пробовали запустить Main как топ10 для ограничения # групп?
Насколько велика (диаграмма) набор записей?

И, настроен ли отчет для асинхронных запросов?

Что происходит в подотчетах: сложный запрос?
простой запрос?
Подавление всех деталей и просто отображение диаграммы?
Переход к другой таблице / базе данных?
Таблицаприсоединяется?

Запустите для «Топ 10» групп в основном, подождите, пока он не закончится, затем проверьте для основного и каждого вспомогательного графика (по крайней мере для нескольких групп):

Report / Performance Information: 
    Total Number of Records -- (Main should be "Top 10" )
    Performance Timing:  
       Run the Query, 
       Read Database Records, 
       Time to Format All Charts 
          or 
       Time to Format 1st Page.

Если у вас есть несколько миллионов записей, даже с «верхом», может потребоваться некоторое время, чтобы прочитать и вычислить верх.Если вы вызываете диаграмму, даже если это для одной группы на диаграмму, если подотчет все еще должен применить связанный запрос, проанализировать миллионы записей, выполнить дополнительные вычисления, создать диаграмму (которая по-прежнему учитывает все записи) и т. д., это может продолжаться очень долго.

Вы можете обнаружить, что маленький "Все" сверху "n" будет показывать много времени, затрачиваемого за кулисами, и это позволяет всемузапустить отчет о том, что отображается дополнительное сравнение количества билетов.А если нет, мы можем посмотреть на это позже (в основном, открыв труп и заглянув внутрь).

Я пытаюсь выяснить правильное поведение и не могу получить документ с требованиями для проверки.Я могу только делать предположения, задавать вопросы и делать предложения.

0 голосов
/ 14 февраля 2012

Где находятся ваши подчиненные отчеты в основном отчете (заголовок группы)? Что вы делаете с деталями записи основного отчета (я полагаю, что это подавление)? Как выглядят формулы выбора записей ИЗ ОТЧЕТОВ? Сколько таблиц в подотчетах? Если у вас несколько столов, правильны ли ваши соединения?

Я видел случаи, когда для подотчетов задан выбор записи, а затем добавлены ссылки из основного отчета, где результирующий запрос подотчета полностью скрывается, поскольку Crystal Reports «помогает», изменяя выбор записи подотчета поверх того, что Разработчик предназначен. Правдивая история (17-секундный отчет был обновлен и работал в течение 20 часов, прежде чем кто-либо заметил, что он никогда не заканчивал запланированный запуск). Это звучит (хех, в тексте), как будто у вас не установлены правильные отношения во вложенных отчетах, и на самом деле могут формироваться декартовы произведения.

Где вы используете код, указанный в вашем вопросе? В выборе записи? В @Formula? Какую ссылку вы используете на подотчет? То, что «должно» быть связано с подотчетами, - это {Incident.Group Name}, так как именно это изменяется в основной группе отчетов.

Если вы разбили вложенные отчеты и запустили их по отдельности, вручную установив для {? Main Group Name} значение «ALL», а затем для выборки имен групп, каков будет результат? Если отдельные вложенные отчеты все еще работают, вы можете, по крайней мере, наблюдать количество записей (строка состояния), а когда вы вручную уничтожаете отчет, вы можете посмотреть информацию о производительности и подотчет Показать запрос.

Наконец, если вы попытаетесь запустить main как «ALL», используя Top 10 (или 2, или любой другой номер, который вы хотите), а затем просмотрите производительность подотчета, это может дать некоторые подсказки. Если есть побочные продукты выбора-размещения, это как минимум немного ограничит эффекты. Вы бы все равно передавали «*» в подотчет, но выполняли только «N» циклов.

Вздох, и последнее: если вы действительно хотите «все», вам лучше обслужить, если вы используете что-то вроде:

If {?Main Group Name} = "ALL" then TRUE
else {Incident.Group Name} = {?Main Group Name}

Извините, что так долго ... У меня не было достаточно времени, чтобы сократить его.

ОК, действительно, действительно ПОСЛЕДНИЙ: Если я неправильно понял ваш пост, предположил слишком много разрозненных тем или просто говорю из своей головы: Извините. Пропустил еду, взял несколько перерывов и удвоил кофе. Я уверен, что где-то есть смайлик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...