Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

LOCATE

Propósito

Iniciar uma leitura seqüencial no arquivo selecionado.

Sintaxe

LOCATE [LAST] | [START <exp>] [FOR<exp.L>] [SHARED|EXCLUSIVE]
[ALL]
[REVERSE]
[CONTINUE]

Argumentos

LAST

determina que a leitura se dará do último registro para o primeiro.

START <exp>

determina que a leitura se inicie a partir do registro com o valor da chave igual ou maior que <exp>.

FOR <exp.L>

determina que só serão lidos os registros que satisfaçam a expressão lógica.

SHARED

determina o bloqueio para leitura compartilhada do registro

EXCLUSIVE

determina o bloqueio para uso exclusivo do registro.

ALL

faz com que todos os itens do registro sejam carregados para memória.

REVERSE

inverte o sentido da leitura.

CONTINUE

lê o próximo registro do arquivo, respeitando o sentido da leitura.

Utilização

Quando se pretende iniciar uma leitura seqüencial em um arquivo selecionado.

Quando utilizado sem opções, lê o primeiro registro do arquivo segundo a chave estabelecida ou pelo arquivo de dados caso este não tenha chave ou não se estabeleça uma chave de acesso.

A opção START é útil quando se sabe o início da leitura. É muito utilizada na pesquisa de intervalos pois limita o início da pesquisa lendo diretamente o registro.

A opção FOR é útil quando se pretende ler somente alguns registros .

A opção START só é aplicável em arquivos de banco de dados.

A opção LAST e o comando REVERSE são úteis quando se pretende paginar o arquivo e caminhar por entre seus registros para frente e para trás.

As opções LAST e o comando REVERSE não são aplicáveis em arquivo externo indexado.

A função EOF( ) retorna verdade (.T.), sempre que se chegar ao fim da pesquisa:

* Com a opção FOR quando mais nenhum registro atender a expressão.

* Com a opção LAST ou o comando REVERSE quando a leitura atingir o início ou o fim do arquivo.

* Com a opção START quando nenhum registro tiver valor igual ou maior que a expressão.

SHARED determina que o registro seja bloqueado, podendo compartilhar somente a leitura do registro. Utilizada em bloqueio de banco, funciona como EXCLUSIVE.

EXCLUSIVE determina que o registro lido seja acessado exclusivamente pelo usuário, sem permitir a leitura ou a gravação por outro usuário.

O comando LOCATE apenas inicia a leitura. Para prosseguir, utilizar o comando CONTINUE.

Exemplo

O exemplo a seguir lê um arquivo do primeiro registro ao último.

DATABASE bdemp1 33 a 2

USE tab_depe

LOCATE             && Le o primeiro registro do arquivo.

DO WHILE FOUND( )

      ? "Numero do registro ",recno( )

      ? "Funcionário ", nom_func

      ? "Data de Nascimento do Dependente "

      ?? TRANSFORM("99/99/99",dat_depe)

      ?

      CONTINUE         && Le os próximos registros do arquivo

ENDDO

O exemplo a seguir lê um arquivo do último registro ao primeiro.

DATABASE bdemp1 33 a 2

USE tab_depe

LOCATE LAST         && Le o ultimo registro do arquivo.

DO WHILE FOUND( )

  ? "Numero do registro ",recno( )

  ? "Funcionário ", nom_func

  ? "Data de Nascimento do Dependente "

  ?? TRANSFORM("99/99/99",dat_dep)

  ?

  CONTINUE

ENDDO

O exemplo a seguir lê somente os registros dos funcionários do sexo feminino.

USE tab_func

LOCATE FOR sex_func = "fem"

DO WHILE .not. EOF( )

    ? "Nome da Funcionaria ", nom_func

    CONTINUE

ENDDO

O exemplo a seguir lê somente funcionários do sexo feminino nascidos entre 1930 e 1960.

USE tab_depe

SET ORDER TO ano_func

LOCATE START 1930 FOR sex_func = "fem"

DO WHILE FOUND( ) .and. ano_func <= 1960 

&& delimita o intervalo

  ? nom_func

  CONTINUE

ENDDO

O exemplo a seguir mostra-nos como paginar um arquivo lendo seus registros seqüencialmente de trás para frente ou de frente para trás.

USE funcion

LOCATE

sentido = "inicio -> fim"

DO WHILE FOUND( )     && Para quando atingir o inicio ou o fim do arquivo

  ? nomefun

  ? sentido

WAIT " Inverte o sentido ? " TO resp

IF resp $ "Ss"

  REVERSE     && Inverte o sentido da leitura.

  CONTINUE

  sentido = "fim -> inicio"

ENDIF

CONTINUE

ENDDO

Consulte

$DATE, $READALL, CONTINUE, FIND, RESTORE, REVERSE, SAVE, SET EXACT, SELECT, SORT, CTOD( ), DBERR( ), DTOC( ), DBMESS( ), EOF( ), FCONTINUE( ), FLOCATE( ), FRECNO( ), FSTART( ) e RECNO( ).

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!