Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/327912/newLayout.css

...

Pagetitle

...

DBSkip

...

...

...

DBSkip

Desloca

...

para

...

outro

...

registro

...

na

...

tabela

...

corrente.

Sintaxe

Bloco de código
collapsefalse
DBSkip( [
nRegistros
 nReg ] )
--> Nil

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

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
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
//Este exemplo, apresente como a função DBSkip() pode passar do final da tabela
//e do início da tabela.
DBUseArea( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )
DBGoBottom()
EOF() // retorna .F.
DBSkip()
EOF() // retorna .T.
DBGoTop()
BOF() // retorna .F.
DBSkip(-1)
BOF() // retorna .T.
//Este exemplo, apresenta o deslocamento de 10 registros em relação ao registro corrente.
DBUseArea(.T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )
DBGoTo(100)
DBSkip(10)
RECNO() // retorna 110
DBSkip(-10)
Recno() // retorna 100
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server