12488 - Erro no número das páginas ao listar modelo de relatório específico
Problema: Ao listar um modelo de relatório específico (customizado), o mesmo está listando todas as páginas, mas a numeração das páginas está contando de 2 em 2, mostrando somente números pares.
O problema é que a variável de sistema NumPag é utilizada no cabeçalho para mostrar a numeração da página e também em uma regra que acaba incrementando o contador novamente, antes de imprimir.
Quando ocorre / onde se aplica:
Modelo de relatório, quando utiliza a variável de sistema NumPag.
Solução: Na seção cabeçalho, regra antes de imprimir, está sendo utilizado a variável de sistema NumPag, conforme exemplo abaixo:
Se (NumPag >= 1)
xvariavel = 1;
A função desta variável é automaticamente incrementar o número da página, sem precisar somar + 1 (cfe. acima).
Como o cabeçalho já tem o contador de página na canto superior, que inicialmente incrementa e terá o valor 1, e ao executar a regra antes de imprimir do cabeçalho e passar pela regra, acaba incrementando mais uma vez, listando sempre páginas com número par, 2,4,6,8,10,... pois a cada vez que lista o cabeçalho, soma 2 vezes.
Neste caso o cliente queria utilizar a regra para controlar o salto de página da seção subtitulo (quebra por centro de custo), baseado em um assinalamento da tela de entrada.
Para esta situação o indicado é apenas utilizar a função AlteraControle (cfe. abaixo) e não utilizar Numpag em regra:
AlteraControle (SubTitCcu,Salto Página,Não);
ou então
AlteraControle (SubTitCcu,Salto Página,Sim);
Observações:
Se realmente é necessário obter o número da página em outra regra no modelo, então é necessário:
- Substituir o controle Sistema do cabeçalho (que faz o controle da numeração, utilizando NumPag), por um controle formula;
- Na seção de inicialização, zerar numpag, cfe. exemplo:
numpag = 0; @ Zera contador de página automático @
- Na seção cabeçalho, regra antes de imprimir:
xNumPag = numPag; @ Atribui página atual+1 para variável auxiliar @
formula001 = xNumPag; @ Atribui a variável auxiliar para o campo formula que foi inserido no lugar do controle sistema que controlava a página. Aqui no exmemplo o nome é formula001.
- Na regra desejada utilizar a variável auxiliar que já tem o valor da página e não utilizar NumPag:
Se (xNumPag > 1)
xFlag = 1;
O problema é que a variável de sistema NumPag é utilizada no cabeçalho para mostrar a numeração da página e também em uma regra que acaba incrementando o contador novamente, antes de imprimir.
Quando ocorre / onde se aplica:
Modelo de relatório, quando utiliza a variável de sistema NumPag.
Solução: Na seção cabeçalho, regra antes de imprimir, está sendo utilizado a variável de sistema NumPag, conforme exemplo abaixo:
Se (NumPag >= 1)
xvariavel = 1;
A função desta variável é automaticamente incrementar o número da página, sem precisar somar + 1 (cfe. acima).
Como o cabeçalho já tem o contador de página na canto superior, que inicialmente incrementa e terá o valor 1, e ao executar a regra antes de imprimir do cabeçalho e passar pela regra, acaba incrementando mais uma vez, listando sempre páginas com número par, 2,4,6,8,10,... pois a cada vez que lista o cabeçalho, soma 2 vezes.
Neste caso o cliente queria utilizar a regra para controlar o salto de página da seção subtitulo (quebra por centro de custo), baseado em um assinalamento da tela de entrada.
Para esta situação o indicado é apenas utilizar a função AlteraControle (cfe. abaixo) e não utilizar Numpag em regra:
AlteraControle (SubTitCcu,Salto Página,Não);
ou então
AlteraControle (SubTitCcu,Salto Página,Sim);
Observações:
Se realmente é necessário obter o número da página em outra regra no modelo, então é necessário:
- Substituir o controle Sistema do cabeçalho (que faz o controle da numeração, utilizando NumPag), por um controle formula;
- Na seção de inicialização, zerar numpag, cfe. exemplo:
numpag = 0; @ Zera contador de página automático @
- Na seção cabeçalho, regra antes de imprimir:
xNumPag = numPag; @ Atribui página atual+1 para variável auxiliar @
formula001 = xNumPag; @ Atribui a variável auxiliar para o campo formula que foi inserido no lugar do controle sistema que controlava a página. Aqui no exmemplo o nome é formula001.
- Na regra desejada utilizar a variável auxiliar que já tem o valor da página e não utilizar NumPag:
Se (xNumPag > 1)
xFlag = 1;