× Linguagem de Programação ADVPL

Perguntas Função POSICIONE passo a passo

Mais
10 anos 8 meses atrás #16662 por kanaamlrr
Você pode usar 2 "posicione"

IF F2_TIPO = 'D'
Posicione("SA2",1,xFilial("SA2")+SF2->F2_CLIENTE,"A2_NOME")
ELSE
Posicione("SA1",1,xFilial("SA1")+SF2->F2_CLIENTE,"A1_NOME")
ENDIF

ou fazer em uma linha só

if(F2_TIPO == 'D', Posicione("SA2",1,xFilial("SA2")+SF2->F2_CLIENTE,"A2_NOME") , Posicione("SA1",1,xFilial("SA1")+SF2->F2_CLIENTE,"A1_NOME"))

acho que isso deve resolver.
Talvez precise de umas correções, mas a ideia é essa.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 8 meses atrás #16667 por leanroxx
Tentei aplicar isso no inicializador do Browse e tem limitação de número de caracteres...

=/

Alguma saída para contornar isso?

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 8 meses atrás #16673 por mbrigagao
Respondido por mbrigagao no tópico Função POSICIONE passo a passo
Leandro,

Desculpe, mas que tipo de customização vc está tentando fazer ?

Para encurtar faça assim :
IIF(F2_TIPO = 'D',Posicione("SA2",1,xFilial("SA2")+SF2->F2_CLIENTE,"A2_NOME"),Posicione("SA1",1,xFilial("SA1")+SF2->F2_CLIENTE,"A1_NOME") )

Caso não caiba é bem provavel que vc tenha fazer um EXECBLOCK.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29628 por maxsm25
Respondido por maxsm25 no tópico Função POSICIONE passo a passo
Bom dia ...
tambem estou pesquisando para aprender mais sobre a função POSICIONE (fBuscaCPO).
Gostaria de saber mais detalhes de como ele faz para transformar as pesquisas bem como ele trata as tabelas...
teria como concatenar esta busca para guardar a informaçao que ele traz e guardar em outra tabela...
Digamos eu tenho produto com o codigo 0513- cabides....
gostaria de fazer uma busca desta forma e colocar em outra tabela sem o codigo mas sim com o nome do produto ... digamos o produto esta na SA1 E quero colocar prontamente na ZAZ...

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás - 8 anos 5 meses atrás #29630 por kanaamlrr
Respondido por kanaamlrr no tópico Função POSICIONE passo a passo
Vamos supor que você queira buscar o nome do cliente dentro da tela de pedidos de vendas.
Nesse momento você tem no campo M->C5_CLIENTE e M->C5_LOJA os dados de código+loja do cliente.

Como funcionaria?
cNome := Posicione("SA1",1,xFilial("SA1")+M->C5_CLIENTE+M->C5_LOJA,"A1_NOME")

Dessa forma, o nome desse cliente será retornado para a variável cNome.
Vou detalhar do que se trata cada um dos campos.
//abaixo uma simulação de como funciona tal função, apesar que acredito que tenha mais uma série de validações.
//cAlias -> Alias da tabela onde vou buscar minhas informações
//nOrdem -> Indice que utilizarei para realizar a busca na tabela destino (cAlias)
//cChave -> Chave de busca que será utilizada para posicionar a tabela destino (buscar informação)
//cCampo -> Campo que será retornado pela função

Function Posicione(cAlias,nOrdem,cChave,cCampo)
Local cRet := space(TamSX3(cCampo)[1])//carrega a variável de retorno em branco no tamanho do campo recebido como parâmetro

//primeira coisa é ordenar a tabela destino de acordo com o índice.
(cAlias)->(dbSetOrder(nOrdem))

//Realiza a busca e verifica se encontrou o registro ou não
If (cAlias)->(dbSeek(cChave))//cChave deve conter a chave completa de busca (incluindo filial)
   cRet := (cAlias)->&(cCampo)//& -> executa macro substituição, transformando "A1_NOME" (string) para A1_NOME (variável)
EndIf

Return cRet

Espero que tenha ajudado.
Caso tenha alguma dúvida coloca ai!
Abraço!
Ultima edição: 8 anos 5 meses atrás por kanaamlrr.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 5 meses atrás #29651 por maxsm25
Respondido por maxsm25 no tópico Função POSICIONE passo a passo
incrivelmente funciona como fBuscaCPO ...
experimentei trocar e funciona exatamente igual.
Muito obrigado pela explicação certissima B)

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.110 segundos
Joomla templates by a4joomla