
Executar uma leitura em cadeia de registros por chave secundária.
SEEK [<chave> = | $=] [<exp> | VIRTUAL(<exp1>,...,<expn>) [LAST] [ALL]
[ DELETE [CASCADE, SETNULLS, KEYINFO]]
...
[REVERSE]
...
[SKIP]
<chave> nome da chave secundária no arquivo.
<exp> representa a expressão a ser pesquisada. Quando <chave> estiver presente, <exp> deve ser do mesmo tipo.
= determina que a cadeia será formada por todos os registros que tenham valor da chave igual ao da expressão.
$= determina que a cadeia será formada por todos os registros que tenham chave tipo cadeia que se inicie com o valor da expressão.
LAST determina que a leitura se dará do último registro para o primeiro registro da cadeia encontrada.
ALL faz com que todos os itens do registro sejam carregados para memória.
VIRTUAL(<exp>,...,<exp>) quando a chave é composta, pode ser especificado o valor para cada parte da chave.
DELETE para deletar uma cadeia inteira definida no SEEK.
REVERSE determina a inversão do sentido de leitura da cadeia.
SKIP lê o próximo registro da cadeia respeitando o sentido da leitura.
Uma leitura em cadeia significa que a OPUS criará um arquivo com os endereços de todos os registros que atendam a expressão.
Um exemplo é a pesquisa de todos os funcionários nascidos em 1964.
É uma pesquisa extremamente rápida e útil, pois é efetuada sobre itens chaves.
Uma pesquisa de prefixo significa que somente os itens chave que tiverem o prefixo igual a expressão serão armazenados na cadeia.
A função CHAIN() retorna o número de registros encontrados com valor da chave igual a <exp> (operador "=").
A função EOF() retorna verdadeiro (.T.) quando a leitura chega ao final da cadeia.
Não são permitidos os operadores ">=" ou "<=" para o comando SEEK.
Para este tipo de pesquisa utilizar o comando LOCATE com a cláusula START.
O exemplo a seguir exibe todos os funcionários inativos.
DATABASE bdemp1 33 a 2
USE tab_depe
SEEK id2_func = 11
? CHAIN() && Exibe a quantidade de funcionários inativos.
DO WHILE FOUND()
? nom_func && Exibe o nome do funcionário encontrado.
SKIP && Le o próximo registro da cadeia.
ENDDO
FIND, RESTORE, REVERSE, SAVE, SKIP, CHAIN( ), DBERR( ), EOF( ), FCHAIN( ), FLSEEK( ), FLSKIP( ) e RECNO( ).
