Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Incluir Página
tec:Eof
tec:Eof

 

Sintaxe

 

EOF()

 

Propósito

 

Determina se o final do arquivo de dados foi atingido.

 

Argumentos

 

Nenhum.

 

Utilização

 

A função EOF(), que significa end of file, é utilizada para verificar se o final de um arquivo de dados foi atingido através da movimentação progressiva (do início para o fim) pelos seus registros. Desta forma, evita-se executar a função dbSkip() quando já se está no final do arquivo. Qualquer função que mova o apontador de registros pode alterar ou definir o resultado da função EOF().

 

Quando o apontador de registros está posicionado após o último registro do arquivo de dados, a função EOF() retorna verdadeiro (.T.). Qualquer tentativa de deslocar o apontador, ultrapassando o último registro, fornece o mesmo resultado, sem causar uma condição de erro.

 

Caso o arquivo de dados não contenha registros, a função EOF() também retornará verdadeiro (.T.). Contudo, se não houver nenhum arquivo de dados aberto na área de trabalho selecionada, a função retornará falso (.F.).

 

A função EOF() mantém o seu valor até que uma nova movimentação do apontador de registros seja efetuada.

 

Dicas

 

Caso o arquivo de dados tenha um índice, a função EOF() detectará o fim do arquivo de acordo com a ordem estabelecida por este índice.

 

A função BOF() é o inverso da função EOF(), pois detecta o início de um arquivo de dados.

 

A mais típica utilização da função EOF() é como parte da condição de um comando WHILE. Neste caso, a condição deverá ser verdadeira enquanto não for atingido o final do arquivo.

 

Para verificar se um registro foi encontrado, caso se utilize a pesquisa exata nas funções dbSeek() ou MsSeek(), deve-se utilizar a função FOUND(), e não a função EOF(). Apenas nos casos de pesquisa aproximada é que se deve utilizar a função EOF() em conjunto com a função FOUND() para verificar se foi encontrado um registro que atenda a chave de pesquisa.

 

Normalmente, a função EOF() opera sobre a área de trabalho selecionada. Contudo, pode-se operar sobre outra área de trabalho através da especificação de um alias. Por exemplo: <alias>->EOF() verifica se foi atingido o final do arquivo aberto na área de trabalho especificada pelo alias.

 

Exemplos

 

dbSelectArea(“SD2”)

 

// De acordo com o arquivo SIX, a chave de pesquisa é D2_FILIAL + D2_CLIENTE + D2_LOJA

dbSetOrder(8)

dbSeek(“01” + “000001” + “02”)     // Filial: 01 / Código: 000001 / Loja: 02

 

WHILE !EOF() .AND. xFilial(“SA1”) == SA1->A1_FILIAL .AND. SA1->A1_COD == “000001” .AND. SA1->A1_LOJA == “02”

          nVlrTot += SD2->D2_VALOR

 

          dbSkip()

ENDDO