- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Função POSICIONE passo a passo
×
Linguagem de Programação ADVPL
Perguntas Função POSICIONE passo a passo
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 2 meses atrás #16662
por kanaamlrr
Respondido por kanaamlrr no tópico Re: Função POSICIONE passo a passo
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.
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.
- leanroxx
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 6
- Obrigados Recebidos: 0
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 2 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 :
Caso não caiba é bem provavel que vc tenha fazer um EXECBLOCK.
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.
- maxsm25
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
9 anos 3 dias 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...
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.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
9 anos 21 horas atrás - 9 anos 21 horas 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?
Dessa forma, o nome desse cliente será retornado para a variável cNome.
Vou detalhar do que se trata cada um dos campos.
Espero que tenha ajudado.
Caso tenha alguma dúvida coloca ai!
Abraço!
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: 9 anos 21 horas atrás por kanaamlrr.
Por favor Acessar ou Registrar para participar da conversa.
- maxsm25
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Função POSICIONE passo a passo
Tempo para a criação da página:0.134 segundos