Função: GetAdvFVal – Execução de pesquisa em arquivo, é uma alternativa ao Posicione()
Esta função permite executar uma pesquisa em um arquivo, pela chave especificada e na ordem especificada, retornando o conteúdo de um ou mais campos.
Sintaxe:
GetAdvFVal – ( < cKeyAlias>, < uCpo>, [ uChave], [ nOrder], [ uDef] ) –> uRet
Parâmetros:
Nome | Tipo | Descrição
cKeyAlias | Caracter | Alias do arquivo (Obrigatório)
uCpo | Qualquer | Nome de um campo ou array contendo os nomes dos campos desejados. (Obrigatório)
uChave | Qualquer | Chave para pesquisa.
nOrder | Numérico | Ordem do índice para pesquisa.
uDef | Qualquer | Valor ou array “default” para ser retornado caso a chave não seja encontrada.
Retorno:
uRet() – Retorna o conteúdo de um campo ou array com o conteúdo de vários campos.
Exemplo via programa AdvPL
#include "protheus.ch"
#include "tbiconn.ch"
#include "topconn.ch"
#DEFINE cEOF Chr(13)+Chr(10)
/*-------------------------------------------------------------------------------------------*
{Protheus.doc} User Function fGetADV()
@type:      User Function
@author:    Jose Moura
@site:      https://academiaproerp.com
@desc.:     Programa fGetADV para demonstrar o uso da função GetAdvFVal
*-------------------------------------------------------------------------------------------*/
User Function fGetADV()
Local cCidOri as Character
Local cPassAer as Character
Local aDados := {}
DbSelectArea('SA1')
DbSelectArea('SC5')
// Exemplo de uso da funcao GetAdvFVal:
// Obtendo dados de apenas um campo:
// Buscar dados da rotina de Viagens - Modulo 06-Financeiro
// cCidOri := GetAdvFVal('FL5','FL5_DESORI', xFilial('FL5') + QUERC->FLE_PRESTA,1,'')
// cPassAer := GetAdvFVal('FLE','FLE_DESPES', xFilial('FLE') + QUERC->FLE_PRESTA+QUERC->FLE_PARTIC+'10',2,'')
cCidOri := GetAdvFVal('FL5','FL5_DESORI', xFilial('FL5') + '0000000061',1,'')
cPassAer := GetAdvFVal('FLE','FLE_DESPES', xFilial('FLE') + '0000000061'+'007719'+'10',2,'')
FWAlertSuccess('Cidade Origem: '+cCidOri+cEOF+;
               'Cod. Pass.Aerea: '+cPassAer,'Info!')
// Obtendo o conteudo de mais de um campo (Array):
// Buscando Nome e Tipo de cliente com base no Cliente/Loja do PV (SC5)
// aDados := GetAdvFVal('SA1',{'A1_NOME','A1_TIPO'},xFilial('SA1')+C5_CLIENTE+C5_LOJACLI,1,{'',''})
aDados := GetAdvFVal('SA1',{'A1_NOME','A1_TIPO'},xFilial('SA1')+'056107'+'00',1,{'',''})
FWAlertInfo('Nome Cliente: '+aDados[1]+cEOF+;
            'Tipo de cliente: '+aDados[2],'AlertInfo!')
Return
Academia Protheus
Sua academia para uma carreira de Sucesso!
Treinamento que Recomendo 👇
Pensando no Mercado de Trabalho com Totvs Protheus, especialmente para ser um Consultor de Negócios e Implantações ? Aqui está o Treinamento que você precisa: https://go.hotmart.com/Q88839526S
Aproveita e acessa nosso conteúdo no YouTube. Inscreva-se no Canal e ative as notificações: https://bit.ly/36keSmP


Usando a função GetAdvFVal em Gatilhos (triggers) – SX7


Analista de sistemas, programador com mais de 18 anos de experiência no sistema Totvs Protheus, administrador, suporte e customizações, idealizador da Academia ProERP, já ajudou centenas de pessoas a programar em AdvPL/Tlpp.
				
		
		
		
		
One thought on “Totvs AdvPL função GetAdvFVal uma alternativa ao Posicione()”