Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia pessoal
Yuri alguns tópicos atrás você me ajudou com a função FieldValue porém fiz uma série de testes e encontrei uma situação muito mas muito estranha.
Estou usando FieldValue dentro de um For, e por algum motivo que não consegui identificar, se o VALOR do campo que aplico "FieldValue" for igual ao valor lido anteriormente (na passagem anterior do for) ele retorna nulo. Se o valor for diferente ele retorna corretamente. Seria maluquisse mas parece uma falha do próprio Qlikview.
Preparei um exemplo que está em anexo, onde você pode depurar poderá verificar que quando a variável vContEmpresa assume o valor 2, a variável vParametro assume nulo, e deveria assumir "ABC".
Se você mudar na leitura inLine o valor ABC da empresa código 2, para algum valor diferente de ABC, verá que vai ler corretamente.
Quem puder me ajudar eu agradeço
Abraço
Anderson Oberdan
Anderson, então utilize o Peek() que não possui esse problema
Anderson,
Essa função funciona apenas para valores de campos distintos... ou seja, se vc inverter o valor do campo da empresa 5 para ACB funciona.
Abraços.
Rogério obrigado pela resposta, mas este é meu problema. Eu posso ter o mesmo valor aqui na minha situação.
Porém uma forma que encontrei de resolver, foi concatenar o valor do campo que pode estar repetido, e na hora de atribuir o valor a variável eu "desconto" esta concatenação. Funcionou, mas convenhamos que é uma "gambiarra" heheh...
Repare no arquivo em anexo que fiz a concatenação do código com o parâmetro na leitura inLine
Depois na linha 24 eu desmembro novamente. E com isso ele carrega direitinho, mesmo com os dados sendo "iguais".
Abraço
Anderson Oberdan
Anderson, então utilize o Peek() que não possui esse problema
Anderson, boa tarde.
Faça assim e veja se o resultado é o esperado.
TabelaEmpresa:
LOAD * INLINE [
Codigo, Nome, Parametro
1, Empresa Alfa, ABC
5, Empresa Beta, ABC
3, Empresa Gama, CDF
];
For vContEmpresa = 0 to NoOfRows('TabelaEmpresa')-1
Let vParametro = Peek('Parametro', $(vContEmpresa), 'TabelaEmpresa');
Let vEmpresaCodigo = Peek('Codigo', $(vContEmpresa), 'TabelaEmpresa');
Let vEmpresaNome = Peek('Nome', $(vContEmpresa), 'TabelaEmpresa');
TRACE '$(vEmpresaCodigo) - $(vEmpresaNome) - $(vParametro)';
Resultado:
LOAD
'$(vEmpresaCodigo)' AS rEmpresaCodigo,
'$(vEmpresaNome)' AS rEmpresaNome,
Date((Today() - RowNo()),'YYYY-MM-DD') AS rData,
'$(vParametro)' AS rParametro
AutoGenerate(5);
NEXT //For vContEmpresa;
Qlikfique-se.
Abraços.
Tonial.
Anderson,
Segue alteração.
Como já dito anteriormente, FieldValue() trabalha na tabela de símbolos do QlikView, portanto só pega valores distintos.
Se precisar pegar o valor em uma linha, utilize o Peek() pois essa trabalha na tabela com os dados.