Nomear / Renomear Controles

Produto:

TOTVS Reports

Versões:

12.1.x

Ocorrência:

 

Ambiente:

 

Passo a passo:

Conteúdo


Introdução


 

Com o advento da migração do TOTVS Reports da versão 11.8x para as versões superiores a versão 12.1.4, muitas alterações foram feitas principalmente na geração sobre demanda dos dados vinculados a cada componente presente no relatório.

Em relatórios da versão 11.8x, por exemplo, a geração sobre demanda dos dados era realizada no momento da impressão de cada componente, ao contrário dos das versões mais atuais (12.1.5 ou superiores), onde a geração dos dados é feita através de apenas uma consulta SQL (Fase de Preparação), que é gerada a partir das tabelas e consultas SQL vinculadas ao relatório.

1 - Nomear / Renomear Controles


 

Ao se nomear / renomear controles devemos nos atentar aos seguintes casos:

  • Nome do controle igual ao nome de alguma coluna de alguma fonte de dados presente no relatório.

1.1 - Nome do Controle Igual ao Nome de uma Coluna de uma Fonte de Dados


Utilizaremos o relatório abaixo (Relatorio_Teste), como exemplo:


Imagem 1 - Relatório Relatorio_Teste.
 

Temos nesse relatório duas tabelas (TMOV e FCFO) e uma consulta SQL, como fonte de dados:


Imagem 2 - Fonte de Dados vinculada ao relatório.

 

A estrutura dos controles do relatório é essa:

BANDAMEMBRO DE DADOSCONTROLENOME COLUNA
1Detalhe1TMOV (Tabela)IDMOVTMOV.IDMOV
2Detalhe1TMOV (Tabela)CODCOLIGADATMOV.CODCOLIGADA
3Detalhe1TMOV (Tabela)CODCFOFCFO.CODCFO
4Detalhe2SQL (Consulta Sql)NOME1SQL (SQL).NOME

Observe que os controles IDMOV, CODCOLIGADA e CODCFO têm o mesmo nome das respectivas colunas das tabelas vinculadas ao relatório (TMOV e FCFO).

 


Imagem 3 - Consulta SQL (SQL) onde a coluna CODCFO recebe por parâmetro o valor de um controle de mesmo nome.



Imagem 4 - Controle CODCFO com o mesmo nome da coluna CODCFO da tabela TMOV e também da tabela FCFO.

 

Com a nova estrutura proposta pelo TOTVS Reports, uma fonte de dados única é formada com os dados suficientes para a impressão dos valores.

Como os dados são preenchidos por demanda, ou seja, depende de quais controles foram atrelados ao relatório, apenas algumas colunas da tabela master TMOV contém dados, como IDMOV e CODCOLIGADA.

A coluna CODCFO, atrelada ao relatório, pertence a tabela FCFO, que não é a tabela master do relatório; Essa coluna foi adicionada a tabela TMOV com o nome de (CODCFO + _ + IdentificadorUnico).

O Resultado é esse:

IDMOVCODCOLIGADACODCFO...CODCFO_389287479
117721  F00002
218291  F00002
318301  F00002

 

Com a explicação acima e com a notação de ordem de recuperação de valores para impressão conseguiremos entender o problema ao se nomear um controle com o mesmo nome de uma coluna de alguma fonte de dados presentes no relatório.

1.1.1 - Ordem de Recuperação de Valores para Impressão


 

N° CaminhoNomeDescrição
1pbFixedValueValores Fixos
2pbFormulaValores Oriundos de Fórmula
3pbRowMemberValores Oriundos de Membro de Dados (Tabela, Consulta SQL)
4unknownValores Oriundos dos Controles do Relatório

 

Quando nomeamos um controle com o mesmo nome de uma coluna de alguma fonte de dados presente no relatório, desviamos o fluxo de recuperação de valores, do caminho 4 , para o caminho 3, fazendo com que o valor impresso seja a da coluna da fonte de dados vinculada ao detalhe (TMOV) em vez de recuperar o valor do controle em si, gerando um relatório com algumas informações faltantes. Exemplo:

 


Imagem 5 - Campo NOME1 do Detalhe2 sendo impresso em branco.

 

1.2 - Solução (Renomear o controle com um nome diferente)


 

Ao renomearmos o controle CODCFO para CODCFO1, por exemplo, o caminho para recuperação dos valores passa a ser o 4, invés do 3, ou seja, o valor do controle é impresso ao invés do valor da coluna CODCFO da tabela TMOV.
 


Imagem 6 - Consulta SQL (SQL) onde a coluna CODCFO recebe por parâmetro o valor de um controle de nome CODCFO1.

 


Imagem 7 - Controle CODCFO1.

 


Imagem 8 - Campo NOME1 do Detalhe2 sendo impresso corretamente.

Observações: