Crystal Reports 2008 - Устранение неполадок при сбросе общей переменной - PullRequest
1 голос
/ 15 декабря 2011

Обновление: это может быть другая проблема?

Я почти уверен, что сделал правильные шаги, но что, если это другая проблема?

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

Фон

У меня есть отчет Crystal Report 2008 с несколькими вложенными отчетами, в которых их общие значения возвращаются к основному отчету для манипуляции.

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

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

Я почти уверен, что это проблема либо с синтаксисом формул, либо с расположением их размещения.

Известные шаги для принятия

Проблема в том, что подотчеты Crystal специально не сбрасываются; это по замыслу.

Чтобы принудительно сбросить отчет, необходимо вставить формулу в группу уровня записи (т. Е. Не заголовок отчета) перед запуском подотчета, который устанавливает общую переменную в ноль.

Макет отчета

  • Заголовок отчета (исключено)
  • Заголовок страницы (основная информация о странице)
  • Заголовок группы 1a - формула сброса общей переменной
  • Заголовок группы 1b - информация о заказе
  • Подробности - подотчет по смете труда и подотчет по смете материалов
  • Нижний колонтитул группы 1a - формулы, отображающие общее количество для обоих подотчетов
  • Нижний колонтитул группы 1b - подробное описание заказа (без подотчета)
  • Нижний колонтитул отчета (исключено)
  • Нижний колонтитул страницы (основная информация о странице)

Формула создания общей переменной в подотчете рабочей силы (помещается в нижний колонтитул подотчета):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts := Sum ({R_PFWR_ESTS_LABBYCODE.TOTALLABORCOSTS});

Формула общей переменной в основном отчете (помещается в основной отчет, нижний колонтитул 1a):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts

Формула сброса общей переменной (помещается в основной отчет, заголовок группы 1a):

WhilePrintingRecords;
Shared CurrencyVar subTotal_LaborCosts;
subTotal_LaborCosts:=0;

Кто-нибудь может увидеть, где я иду не так? Спасибо!

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Если ваш расчет является скалярным значением, вы можете рассмотреть возможность использования поля SQL-выражения вместо подотчета. SQL поля можно соотнести с основным запросом, возможно, с полем группировки, вашей ситуацией.

** редактировать **

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

  • Создать выражение SQL:

    - {%} TOTAL_LABOR_COST ( ВЫБЕРИТЕ ТОТАЛЛАБОРКОСТЫ FROM R_PFWR_ESTS_LABBYCODE - ссылка на поле в основном отчете, вероятно, изменяющееся для каждой строки в разделе «Сведения». --ГДЕ - группа, если необходимо --ГРУППА ПО )

  • Поместите поле в раздел Подробнее

  • Вставьте резюме в это поле; место в группе 1 нижний колонтитул
0 голосов
/ 15 декабря 2011

Я понял, в чем проблема.

Реальная проблема

Проблема не в том, что формула не сбрасывалась (это было).

Проблема заключалась в том, как я связал поля отчета с параметром подотчета.

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

Fix

Чтобы исправить это, я изменил значение, связанное спараметр подотчета.

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

...