Encontra um registro com determinado valor da chave do índice.
Sintaxe
SEEK Exp [SOFTSEEK]
Argumento | Obrigat. | Tipo | Descrição |
Exp | Sim | Expressão em ADVPL a ser resolvida para o registro ser encontrado |
Retorno | Descrição |
NIL | Sem 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