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>] 

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.

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 é útil quando se pretende paginar o arquivo e caminhar por entre seus registros para trás. A opção LAST não é aplicável 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 quando a leitura atingir o início do arquivo.

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, 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!