Desloca para outro registro na tabela corrente.
Sintaxe
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
nReg | numérico | Indica o número de registros que serão deslocados a partir do corrente. Se o valor for positivo, o deslocamento será em direção ao final da tabela. Caso seja negativo, ao início da tabela. Valor padrão: 1. | | |
Retorno
Nome | Tipo | Descrição |
---|
uRet | nil | Sempre retorna nulo. |
Observações
- Essa função é utilizada para deslocar o ponteiro de registro da tabela para outro registro a partir do registro atual. O deslocamento é lógico, ou seja, leva em consideração a ordem no índice atualmente em uso, e também a expressão de filtro, caso exista.
- O uso da DBSkip sem uma tabela aberta resultará na mensagem de erro: "Work area not in use".
- Caso o deslocamento seja negativo (registros anteriores), e passe do início da tabela, o primeiro registro é posicionado e a flag de início da tabela (BOF) é setado.
- Caso o deslocamento seja positivo (registros posteriores), e passe do final da tabela, a tabela é posicionada no registro "LastRec()+1", e a flag de final de arquivo (EOF) é setada.
Neste último caso, se a RDD for TOPCONN, o Recno retornado será por convenção "LastRec() + 5000". - O comportamento da DBSkip é influenciado pelo uso do comando SET DELETED.
Exemplos
static function CreateTable()
TCDelFile('T1')
DBCreate('T1', {{"FIELD_NAME", "C", 10, 0}, ;
{"FIELD_TYPE", "C", 10, 0}}, 'TOPCONN')
return
user function test()
Local cT1 := "T1"
TCLink()
CreateTable()
DBUseArea(.F., 'TOPCONN', cT1, (cT1), .F., .F.)
for nI := 1 to 20
(cT1)->( DBAppend( .F. ) )
(cT1)->FIELD_NAME := "name" + cValtoChar(nI)
(cT1)->FIELD_TYPE := "string"
(cT1)->( DBCommit() )
next
DBGoTop()
DBSkip(-1) //esta execução, após o DBGoTop, posiciona no início (BOF) da tabela
msgInfo("Current Record: " + cValtoChar( recno() ))
DBSkip(10) //desloca 10 registros "para frente"
msgInfo("Current Record: " + cValtoChar( recno() ))
DBSkip(-5) //desloca 5 registros "para trás"
msgInfo("Current Record: " + cValtoChar( recno() ))
DBSkip() //desloca 1 registro "para frente", respeitando seu valor default (1)
msgInfo("Current Record: " + cValtoChar( recno() ))
DBSkip(100)//desloca 100 registros "para frente", mas como só há 20 registros na tabela, posiciona no fim da tabela (EOF)
msgInfo("Current Record: " + cValtoChar( recno() ))
DBCloseArea()
TCUnlink()
return