Формула подавления заголовка группы Crystal Reports не работает - PullRequest
2 голосов
/ 29 октября 2010

У меня есть отчет, который группирует по двум кодам, мы назовем их Parent и Child.

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

В отчете есть несколько столбцов, и когда группа разбивается, я хочу снова отобразить новое дочернее имя, а также заголовки столбцов. Отчет должен выглядеть примерно так:

Parent Name
    Child Name
    Col1 Col2 Col3 Col4 Col5 Col6
    XXXX XXXX XXXX XXXX XXXX XXXX
    XXXX XXXX XXXX XXXX XXXX XXXX

    Child Total:             XXXX

    Child Name
    Col1 Col2 Col3 Col4 Col5 Col6
    XXXX XXXX XXXX XXXX XXXX XXXX

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

Для этого я создал заголовок страницы, который содержит следующие объекты:

Parent Name
    Child Name
    Col1 Col2 Col3 Col4 Col5 Col6

В заголовке страницы есть переменная RowReset, которая содержит следующую формулу:

WhilePrintingRecords;
Shared numberVar nRowCount := 0

Затем в каждой строке сведений, а также в разделах «Нижний колонтитул группы 1» и «Нижний колонтитул группы 2» используется следующая формула RowIncrement:

WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;

Наконец, в каждом разделе заголовка группы 2 у меня есть следующая формула условного подавления:

WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
    True
ELSE
    False

То, что он пытается сделать, это подавить заголовок дочерней группы, если мы на совершенно новой странице, и подробные записи еще не распечатаны, чтобы предотвратить следующее:

Parent Name                          ---+
    Child Name                          +-- Page header
    Col1 Col2 Col3 Col4 Col5 Col6    ---+

    Child Name                       ---+-- Group header 2
    Col1 Col2 Col3 Col4 Col5 Col6    ---+

По какой-то причине я не могу понять, около 40 страниц в отчете, хотя я получаю именно это; запись заголовка страницы, за которой следует запись заголовка группы 2. Если я создаю формулу, которая содержит формулу условного подавления, она отображает TRUE, но заголовок группы по-прежнему не подавляется.

Если я разбью код так, чтобы он проверял только одно из условий (либо PageNumber <> 1, либо nRowCount = 0), то заголовок группы 2 подавляет корректно.

Я даже пытался это разбить:

WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;

IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);

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

Что, черт возьми, я здесь делаю неправильно? Есть ли лучший подход, который я мог бы выбрать?

1 Ответ

3 голосов
/ 29 октября 2010

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

...