Índices, ordens e pesquisas em tabelas Protheus
Confere a expressão da ordem antes de montar a chave de busca.
Visão geral
DBSetOrder escolhe a ordem lógica da área aberta e pode falhar se a ordem não existir. IndexKey retorna a expressão como texto; não cria nem reconstrói índice. DBSeek exige uma ordem compatível com o tipo e a composição da chave e seu retorno lógico deve ser conferido antes de ler campos. Com lSoftSeek verdadeiro, pode haver posicionamento aproximado mesmo com retorno falso: posição não comprova correspondência. O exemplo apenas inspeciona a ordem atual de SB1 para não presumir número de ordem, largura ou código. Na consulta SQL, ORDER BY e a decisão de índice físico são questões separadas. (Fontes: refs. 1–4.)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed738()
Local cExpressao := ""
// Consulta alias ja aberto; nao muda ordem nem posicao.
If Select("SB1") > 0
cExpressao := SB1->(IndexKey())
EndIf
ConOut(cExpressao)
Return NilExibe a expressão corrente ou string vazia; não busca um produto. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não usar trim para encurtar componentes de chave de largura fixa. Preservar a área e a ordem se o processamento realmente as alterar; não aplicar rotina de criação do exemplo técnico a tabelas padrão.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.