
Ler um registro através de seu número lógico.
GO [BYTE] <exp.N>
|
<exp.N> |
representa o número lógico do registro em arquivo do banco ou arquivo de SORT. |
|
BYTE |
para arquivos externos representa a posição do registro em bytes. |
Acessa um registro pelo seu endereço lógico no arquivo de dados. Este comando ignora o índice utilizado, lendo diretamente sobre o arquivo de dados.
Se <exp.N> for o endereço de um registro excluído, a função DBERR() retornará 216 (este código indica que REGISTRO NÃO EXISTE NO ARQUIVO).
A função EOF( ) retorna verdadeiro (.T.), caso o registro não seja encontrado.
Este comando só se aplica aos arquivos que têm registros de tamanho fixo:
O exemplo a seguir mostra-nos como acessar o quinto registro em um arquivo de banco de dados.
USE tab_vend
GO 5 && Acessa o registro de numero 5
IF FOUND()
? "Encontrou o Registro Numero 5"
ELSE
? "Este Arquivo tem menos de 5 registros"
?? " ou Registro 5 foi excluído"
ENDIF
O exemplo a seguir mostra-nos a leitura de um registro em arquivo externo.
USE agenda.d && Arquivo tipo R (relativo)
GO 90
IF EOF()
? "Este Arquivo tem menos de 90 registros"
?? " ou Registro 90 foi excluído"
ENDIF
Neste exemplo, go 2 eqüivale a go byte 20.
use *
abc s len(20)
a u20
enduse
No caso de arquivos externos tipo L ou M, BYTE <expN> corresponde a soma dos tamanhos dos registros mais 1 (UNIX) ou mais 2 (WINDOWS) anteriores ao registro.
use *
abc l len(20)
a u20
enduse
decl posi[3]=0
locate
p=0
for i=1 to 3
posi[i]=p
p=p+len(a)+2
continue
next
No exemplo acima, go byte posi[2] posiciona no 2o. registro.
LOCATE, SELECT, EOF( ), FGO ( ), FRECNO( ) e RECCOUNT( ).
