Olá pessoal…
Na vídeo aula de hoje, vou falar um pouco sobre Índices e Posicionamento (DbSetOrder, Posicione, DbOrderNickName, etc).
Abaixo o código fonte utilizado para os testes:
//Bibliotecas #Include "Protheus.ch" /*/{Protheus.doc} zIndPos Função de exemplo de índices e posicionamento @type function @author Atilio @since 18/11/2015 @version 1.0 @example u_zIndPos() /*/ User Function zIndPos() Local aArea := GetArea() Local cDescri := "" DbSelectArea("SB1") SB1->(DbSetOrder(1)) //Nesta função, parametrizo que irei utilizar o índice 1... após o 9, na tabela de índices será gravado A (10), B (11), C (12)... SB1->(DbGoTop()) //Garantindo que após a ordenação, minha tabela fique no topo //Posicionando conforme DbSeek, onde passo os campos na sequência do índice... utilizamos a FWxFilial que retorna a filial atual para essa tabela If SB1->(DbSeek(FWxFilial('SB1') + 'E00001')) MsgInfo("Descrição 1: "+SB1->B1_DESC, "Atenção") EndIf //Também posso utilizar o DbOrderNickName, caso o índice tenha um apelido, por exemplo: //SE1->(DbOrderNickName("TITPAI")) //Por último, existe também a função Posicione, que me retorna um campo qualquer da tabela cDescri := Posicione( 'SB1',; //Alias da Tabela 1,; //Índice de pesquisa FWxFilial('SB1')+'E00002',; //Chave da Pesquisa 'B1_DESC') //Campo de retorno MsgInfo("Descrição 2: "+cDescri, "Atenção") RestArea(aArea) Return
Se quiser fazer o download desse código ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 009 – Utilizando Índices e Posicionamento).
Bom pessoal, por hoje é só.
Abraços e até a próxima.