Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
marcelo_groff
Contributor
Contributor

retorno de conteúdo de campo

Bom dia pessoal,

Estou com um problema e preciso de ajuda.

Tenho uma aplicação que em determinado momento da execução do script, gera um qvd  com os campos e os dados abaixo:

ValorA    ValorB    ValorC    ValorD     ValorE

      37         22            21         100          107

Logo depois , executo uma sub-rotina, que  me traz de resultado o número 3

Gostaria de saber como eu poderia acessar este QVD e trazer o resultado do terceiro campo. Neste caso seria o valor 21.

Se alguém tiver alguma ideia, agradeço.

Labels (2)
1 Solution

Accepted Solutions
marcelo_groff
Contributor
Contributor
Author

Boa tarde Pessoal,

Estava num outro cliente, voltei a este assunto hoje.

Então consegui resolver a situação com o script abaixo.

Precisava resolver no script e não no front-end.

Funcionou.

Como faço para fechar ? escolho uma resposta como certa ?

Att Marcelo

Na tabela de PRODUTOS_GRAVA, no campo Posicoes_Gabarito_Produto eu tenho a posição do campo que tenho que retornar o conteúdo da tabela MEU_QVD.

Código:

LET vReg = NoOfRows('PRODUTOS_GRAVA');

// TRACE Num Of Record $(vCant);

FOR j=0 TO $(vReg)

LET vCNPJ_CED= Peek('PRODUTOS_GRAVA.CNPJ_CED',$(j),'PRODUTOS_GRAVA');

LET vData_CED = Peek('PRODUTOS_GRAVA.Data_CED',$(j),'PRODUTOS_GRAVA');

LET vProduto = Peek('PRODUTOS_GRAVA.Produto',$(j),'PRODUTOS_GRAVA');

LET vPosicoes_1 = Peek('PRODUTOS_GRAVA.Posicoes_1',$(j),'PRODUTOS_GRAVA');

LET vPosicoes_Gabarito_Produto = Peek('PRODUTOS_GRAVA.Posicoes_Gabarito_Produto',$(j),'PRODUTOS_GRAVA');

LET vCampo_Gabarito = FieldName('$(vPosicoes_Gabarito_Produto)' + 1,'MEU_QVD');

LET vResultado= Peek('$(vCampo_Gabarito)',0,'MEU_QVD);

NEXT j;

View solution in original post

9 Replies
Clever_Anjos
Employee
Employee

teria como você postar seu script com esse trecho?

Tentando entender o que você precisa

Thiago_Justen_

Bom dia Marcelo,

Como o Clever disse, seria interessante dar mais detalhes ou disponibilizar o script. Contudo, se o que você precisa é somente "acessar" o ValorC no qvd, talvez isso resolva:

//Seu script

Load

     ValorC

From [lib://LOCAL_ONDE_SE_ENCONTRA_SEU_QVD/SEU_QVD.qvd](qvd);

Veja, estou supondo uma situação que pode inclusive parecer uma resposta deveras idiota para ti...

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
marcelo_groff
Contributor
Contributor
Author

Bom dia Pessoal,

desculpa a demora, fiquei sem internet ontem.

Vou melhorar a pergunta.

Na verdade o meu QVD tem 11 colunas

Cliente ValorA ValorB ValorC ValorD ValorE ValorF ValorG ValorH ValorI ValorJ

Cli1          37      22         21     100      107       0         0           0           0       0

Diante disto, monto um outro QVD com zeros e uns para análise, sendo que 1 é quando tem valor e zero quando não tem:

Cliente    Valores possíveis

CLI1       1111100000

Coloco este campo valores possíveis numa subrotina onde tem a regra de negócio definida pela empresa.

Após o cálculo ele me retorna que o resultado esperado está na terceira posição, isto é, a sub rotina me retorna 3

CLI1   3

Diante desta informação, tenho que voltar no QVD original e pegar o valor do terceiro campo da tabela, desconsiderando a cliente e colocá-lo numa variável.

você acham que uma combinação de PEEK com fieldname vai funcionar ?

P.S. coloco 4 porque tenho que somar a coluna cliente]

vResultado= Peek(FieldName(4,meu_qvd),1,meu_qvd);

Abs

nicolett_yuri

Qual regra você usa para considerar que o valor correto é o da terceira coluna?

Talvez seja mais interessante transformar essas colunas em linhas (crosstable) e depois aplicar a regra, ficaria mais fácil escolher a linha correta (where), do que ter que escolher a coluna (peek).

Mas de qualquer maneira precisamos entender melhor o seu problema.

Thiago_Justen_

Perfeito Marcelo, agora sim ficou claro o que você precisa. Pois bem, seria possível disponibilizar um app de exemplo pra gente testar algumas soluções?

Talvez o caminho mais fácil seja o que o nicolett.yuri‌ disse mesmo, mas se não for interessante pra você podemos testar outra solução.

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Clever_Anjos
Employee
Employee

Tente com algo parecido com

Let Campo = 'Valor'&chr(Ord('A')+ varRetorno);

// Onde a varRetorno traz o que sua rotina de negocio devolveu

LOAD

     Cliente ,

     $(Campo) as Valor

From SeuQVD;

Thiago_Justen_

Marcelo, alguma novidade sobre teu problema?

Se conseguiu resolve-lo feche esta thread e compartilhe conosco a resolução.

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
marcelo_groff
Contributor
Contributor
Author

Boa tarde Pessoal,

Estava num outro cliente, voltei a este assunto hoje.

Então consegui resolver a situação com o script abaixo.

Precisava resolver no script e não no front-end.

Funcionou.

Como faço para fechar ? escolho uma resposta como certa ?

Att Marcelo

Na tabela de PRODUTOS_GRAVA, no campo Posicoes_Gabarito_Produto eu tenho a posição do campo que tenho que retornar o conteúdo da tabela MEU_QVD.

Código:

LET vReg = NoOfRows('PRODUTOS_GRAVA');

// TRACE Num Of Record $(vCant);

FOR j=0 TO $(vReg)

LET vCNPJ_CED= Peek('PRODUTOS_GRAVA.CNPJ_CED',$(j),'PRODUTOS_GRAVA');

LET vData_CED = Peek('PRODUTOS_GRAVA.Data_CED',$(j),'PRODUTOS_GRAVA');

LET vProduto = Peek('PRODUTOS_GRAVA.Produto',$(j),'PRODUTOS_GRAVA');

LET vPosicoes_1 = Peek('PRODUTOS_GRAVA.Posicoes_1',$(j),'PRODUTOS_GRAVA');

LET vPosicoes_Gabarito_Produto = Peek('PRODUTOS_GRAVA.Posicoes_Gabarito_Produto',$(j),'PRODUTOS_GRAVA');

LET vCampo_Gabarito = FieldName('$(vPosicoes_Gabarito_Produto)' + 1,'MEU_QVD');

LET vResultado= Peek('$(vCampo_Gabarito)',0,'MEU_QVD);

NEXT j;

Thiago_Justen_

Exato Marcelo, escolha aquela resposta que lhe serviu como correta e atribua o valor "Útil" às outras que lhe serviram para caminhar até a resolução do problema.

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago