Árvore de páginas

Desloca para outro registro na tabela corrente.

Sintaxe

DBSkip( [ nReg ] )

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
  • Sem rótulos