2010-10-29 4 views
1

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

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

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

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 

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

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 при отображении на экране, но не в состоянии подавить заголовок группы.

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

ответ

3

Я предлагаю помещать поле «родительское имя» в заголовок группы своей группы, а не в заголовке страницы. Затем в родительской и дочерней группах установите флажок «Repeat Group Header On Each Page» в диалоговом окне параметров группы.

+0

Вы знаете, это действительно смущает - как-то я * никогда не заметил, что этот флажок установлен в диалоговом окне «Параметры группы». Я искал что-то подобное в параметрах «Формат группы». Он по-прежнему не объясняет, почему код не работает, но я просто счастлив двигаться дальше. – LittleBobbyTables

+2

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

Смежные вопросы