Página 1 de 1

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 09:36
por porter
ola pessoal, estou com uma duvida aqui, como faço para processar um arquivo DBF do final para o começo, quero ir no final do arquivo (GO BOTTOM), e com
SKIP -1 processar ate o começo do arquivo, obrigado

go bottom
do while
skip -1
enddo

xHarbour, windows 7.

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 10:02
por Kapiaba

Código: Selecionar todos

   GO BOTT

   WHILE .NOT. BOF()  // BEGIN OF FILE.

      IF BOF()
         EXIT
      ENDIF

      // ... Processamento.

      SKIP( -1 )

   ENDDO

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 10:05
por porter
Valeu Kapiaba, obrigado .

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 10:32
por Eolo
GO BOTT

WHILE .NOT. BOF() // BEGIN OF FILE.

///// IF BOF() -----> a mais
///// EXIT
///// ENDIF

// ... Processamento.

SKIP( -1 )

ENDDO
Não precisa do IF/ENDIF. Ele está a mais, só está gastando processamento.

O WHILE já está controlando a coisa. Aliás, quando o ponteiro chegar no BOF(), o IF nem vai ficar sabendo...

Do jeito que está, é como fazer:
FOR X=1 to 10

if x=10 // a mais
exit
endi

// processamento
next

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 16:05
por JoséQuintas
Só uma observação: SKIP não é função.
Mesmo que o compilador aceite, convém acostumar do modo correto.

Código: Selecionar todos

GOTO BOTTOM
DO WHILE .NOT.. BOf()
   SKIP -1
ENDDO
Nota: É um exemplo de algo errado que o Clipper aceita. Mas nesse erro o Harbour ficou compatível.

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 16:37
por Itamar M. Lins Jr.
Ola!
Permita-me...

O correto é dbskip() FUNÇÃO!
Aqui eu só uso assim:

Código: Selecionar todos

alias->(DbSkip())
Olhe a saída do PPO.
SKIP [<nRecords>] [ALIAS <idAlias> | <nWorkArea>]
Nós escrevemos skip e o pré-processador transforma para dbskip()

Saudações,
Itamar M. Lins Jr.

processar arquivo DBF do final para o começo

Enviado: 28 Jul 2015 16:45
por Itamar M. Lins Jr.
No PRG eu escrevi assim:
skip alias xx
skip( -1 )
Aqui o ppo saiu assim:

Código: Selecionar todos

   xx->( dbSkip() )
   dbSkip( ( -1 ) )
Saudações,
Itamar M. Lins Jr.

processar arquivo DBF do final para o começo

Enviado: 29 Jul 2015 09:28
por aferra
apresentando mais uma forma

// coloca em ordem decrescente
OrdDescend( ,, .T. )

// inicio do arquivo "ao contrario"
dbGoTop()

// sem se preocupar com mais nada.
dbEval( {|| <suas_instrucoes> } )

// coloca em ordem natrual
OrdDescend( ,, .F. )

processar arquivo DBF do final para o começo

Enviado: 29 Jul 2015 10:22
por JoséQuintas
Itamar, prefiro o jeito tradicional.

Talvez seja bom o jeito tradicional pra algumas coisas, porque se houver mudança o .CH já faria o ajuste.
Mas não me pergunte, não faço a menor idéia se faz diferença em alguma coisa.

No caso do CLEAR por exemplo, acaba sendo substituído por várias funções.

Código: Selecionar todos

Scroll()
SetPos( 0, 0 )
ReadKill( .T. )
GetList := {}
( GetList )
Nem sei o que faz essa última ( GetList )