Conteúdo
| Índice |
|---|
| exclude | Conteúdo|Nomear / Renomear Controles|Galeria Consulta SQL Vinculada a Banda|Galeria Consulta SQL Não Vinculada a Banda |
|---|
|
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: Image Added Imagem 1 - Relatório Relatorio_Teste.
Temos nesse relatório duas tabelas (TMOV e FCFO) e uma consulta SQL, como fonte de dados: Image Added Imagem 2 - Fonte de Dados vinculada ao relatório.
A estrutura dos controles do relatório é essa: | Nº | BANDA | MEMBRO DE DADOS | CONTROLE | NOME COLUNA |
|---|
| 1 | Detalhe1 | TMOV (Tabela) | IDMOV | TMOV.IDMOV | | 2 | Detalhe1 | TMOV (Tabela) | CODCOLIGADA | TMOV.CODCOLIGADA | | 3 | Detalhe1 | TMOV (Tabela) | CODCFO | FCFO.CODCFO | | 4 | Detalhe2 | SQL (Consulta Sql) | NOME1 | SQL (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). Image Added Imagem 3 - Consulta SQL (SQL) onde a coluna CODCFO recebe por parâmetro o valor de um controle de mesmo nome.
Image Added 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: | N° | IDMOV | CODCOLIGADA | CODCFO | ... | CODCFO_389287479 |
|---|
| 1 | 1772 | 1 | | | F00002 | | 2 | 1829 | 1 | | | F00002 | | 3 | 1830 | 1 | | | 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° Caminho | Nome | Descrição |
|---|
| 1 | pbFixedValue | Valores Fixos | | 2 | pbFormula | Valores Oriundos de Fórmula | | 3 | pbRowMember | Valores Oriundos de Membro de Dados (Tabela, Consulta SQL) | | 4 | unknown | Valores 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: Image Added 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. Image Added Imagem 6 - Consulta SQL (SQL) onde a coluna CODCFO recebe por parâmetro o valor de um controle de nome CODCFO1.
Image Added Imagem 7 - Controle CODCFO1.
Image Added Imagem 8 - Campo NOME1 do Detalhe2 sendo impresso corretamente.
|