DbSkip e navegação sequencial
Percorre uma sequência limitada com avanço e teste de fim.
Visão geral
Um loop precisa definir ponto inicial, condição de fim e avanço. DBGoTop inicia na primeira posição lógica; DBSkip respeita ordem e filtro, e EOF deve ser testado antes de acessar campos. O exemplo percorre no máximo três registros visíveis da tabela própria EDTRB e apenas conta, sem expor dados. Filtros e configuração de excluídos influenciam a contagem; isso não é total geral da tabela. O alias fica na posição alcançada, que pode ser EOF. (TOTVS, s.d., refs. 1–2)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed341()
Local nContagem := 0
If Select("EDTRB") > 0
EDTRB->(DBGoTop())
While !EDTRB->(Eof()) .And. nContagem < 3
nContagem++
EDTRB->(DBSkip(1))
EndDo
ConOut(cValToChar(nContagem))
EndIf
Return NilContagem entre zero e três, dependendo dos registros visíveis. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não retirar o avanço do loop. Garantir contexto de leitura sem alterações pendentes; restaurar área e posição quando exigido pelo chamador.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.