Encontra um registro com determinado valor da chave do índice.

Sintaxe

SEEK Exp [SOFTSEEK]

ArgumentoObrigat.TipoDescrição
ExpSimExpressão em ADVPL a ser resolvida para o registro ser encontrado

 

RetornoDescrição
NILSem retorno

Descrição

Este comando é utilizado para encontrar um registro com determinado valor da expressão de chave de índice.

Antes da chamada do SEEK deve-se certificar de que existe uma ordem ativa no momento com os campos que se deseja pesquisar o valor.

Caso a expressão possua apenas um campo numérico, o primeiro parâmetro deve ser do tipo numérico, mas nos demais casos deve-se utilizar um valor do tipo caracter para este parâmetro (mesmo se forem apenas dois campos numéricos ou do tipo data).

Quando for especificada a opção “SOFTSEEK”, mesmo que a expressão pesquisada não encontrar nenhum registro com este valor, a tabela será posicionada no próximo valor maior que o especificado no primeiro parâmetro, mas mesmo posicionando no próximo valor, esta função retornará .F. (pois não encontrou).

Quando não for especificado este valor ou estiver .F. e falhar o valor de pesquisa, a tabela será posicionada em LASTREC + 1 e será setada a flag de EOF.

Exemplo

Este exemplo demonstra como se pode utilizar o SEEK para busca de valores numéricos.

USE Clientes NEW

ORDLISTADD (“/teste/ind1.cdx”) // Expressão é Num (campo numérico)

SEEK 100 // Retorna: .F.

EOF() // Retorna: .T.

SEEK 100 SOFTSEEK // Retorna: .F.

EOF() // Retorna: .F. (pois o softseek posicionou no próximo registro)

 

Este exemplo demonstra como se pode utilizar o SEEK para percorrer todos os registros de Clientes com o nome joao e vencimentos a partir de janeiro de 2001.

USE Clientes NEW

ORDLISTADD (“/teste/ind2.cdx”) // Expressão é Nome+Venc (campo caracter + data)

SEEK ”     joao200101″ SOFTSEEK // Procura a primeira ocorrência de Nome “joao” e vencimento maior que Janeiro de 2001

WHILE !EOF() .AND. Nome == ”     joao”

DBSKIP()

ENDDO

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Necessita de ajuda?