У меня есть отчет, который группирует по двум кодам, мы назовем их 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
при отображении на экране, но не может подавить заголовок группы.
Что, черт возьми, я здесь делаю неправильно? Есть ли лучший подход, который я мог бы выбрать?