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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top