DBSkip

Avanca (ou recua) registros na tabela ativa. Operador padrao em loops While/Enddo de varredura.

Assinatura: DBSkip([nQtd]) -> NIL

Retorna: NIL

DBSkip move o ponteiro N registros pra frente (positivo) ou pra tras (negativo). E o jeito padrao de iterar uma tabela em AdvPL.

Sintaxe

DBSelectArea("SA1")
DBGoTop()
While !Eof()
    ConOut(SA1->A1_NOME)
    DBSkip()           // proximo registro
EndDo

Pegadinhas

Padrao com xFilial e indice

SC6->(DBSetOrder(1))
SC6->(DBSeek(xFilial("SC6") + cNumPed))

While !SC6->(Eof()) .And. ;
      SC6->C6_FILIAL == xFilial("SC6") .And. ;
      SC6->C6_NUM == cNumPed

    ConOut("Item " + SC6->C6_ITEM + ": " + SC6->C6_PRODUTO)
    SC6->(DBSkip())
EndDo

Parâmetros

NomeTipoObrigatórioDescrição
nQtdNumericnãoQuantidade de registros a pular (default 1). Negativo retrocede.

Exemplos

Loop com proteção contra filial errada

SE1->(DBSetOrder(1))
SE1->(DBSeek(xFilial("SE1") + cCliente))
While !SE1->(Eof()) .And. SE1->E1_FILIAL == xFilial("SE1") .And. SE1->E1_CLIENTE == cCliente
    nTotal += SE1->E1_VALOR
    SE1->(DBSkip())
EndDo

Veja também