Crystal Reports Fórmula de supressão do cabeçalho do grupo não funciona
-
27-09-2019 - |
Pergunta
Eu tenho um relatório que grupos por dois códigos, vamos chamá -los Parent
e Child
.
Na parte superior de cada página, no cabeçalho da página, quero imprimir o nome do pai.
Existem várias colunas no relatório e, quando o grupo quebra, quero exibir o novo nome da criança, bem como os cabeçalhos da coluna novamente. O relatório deve parecer algo assim:
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
Se um grupo infantil encerrar a nova página, eu quero exibir novamente o nome da criança e as legendas da coluna antes de exibir os dados novamente.
Para conseguir isso, criei um cabeçalho de página que contém os seguintes objetos:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
No cabeçalho da página é uma variável RowReset
que contém a seguinte fórmula:
WhilePrintingRecords;
Shared numberVar nRowCount := 0
Então, em cada linha de detalhes, bem como o rodapé do grupo 1 e o rodapé do grupo 2, eu tenho o seguinte RowIncrement
Fórmula:
WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;
Finalmente, em cada seção do cabeçalho do grupo 2, tenho a seguinte fórmula de supressão condicional:
WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
True
ELSE
False
O que isso tenta fazer é suprimir o cabeçalho do grupo infantil se estivermos em uma página nova, e nenhum registro de detalhes foi impresso, para impedir que o seguinte aconteça:
Parent Name ---+
Child Name +-- Page header
Col1 Col2 Col3 Col4 Col5 Col6 ---+
Child Name ---+-- Group header 2
Col1 Col2 Col3 Col4 Col5 Col6 ---+
Por alguma razão, não consigo descobrir, cerca de 40 páginas no relatório, eu entendo exatamente isso; Um registro de cabeçalho de página, seguido por um registro do cabeçalho do grupo 2. Se eu criar uma fórmula que contém a fórmula de supressão condicional, ele exibe TRUE
, mas o cabeçalho do grupo ainda não suprime.
Se eu interromper o código para que ele verifique apenas um dos condicionais (ou seja PageNumber <> 1
ou nRowCount = 0
) Em seguida, o cabeçalho do grupo 2 suprime corretamente.
Eu até tentei isso para terminar as coisas:
WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;
IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);
Ele também exibe True
Quando exibido na tela, mas não suprime o cabeçalho do grupo.
O que diabos estou fazendo de errado aqui? Existe uma abordagem melhor que eu poderia adotar?
Solução
Sugiro colocar o campo 'Nome dos pais' no cabeçalho do grupo de seu próprio grupo, e não no cabeçalho da página. Em seguida, nos grupos pais e filhos, selecione o "cabeçalho do grupo repetido na caixa de seleção de cada página" na caixa de diálogo Opções do grupo.