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