Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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;
teria como você postar seu script com esse trecho?
Tentando entender o que você precisa
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!
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
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.
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!
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;
Marcelo, alguma novidade sobre teu problema?
Se conseguiu resolve-lo feche esta thread e compartilhe conosco a resolução.
Abs e Sucesso!
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;
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!