processar arquivo DBF do final para o começo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

processar arquivo DBF do final para o começo

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

processar arquivo DBF do final para o começo

Mensagem por Kapiaba »

Código: Selecionar todos

   GO BOTT

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

      IF BOF()
         EXIT
      ENDIF

      // ... Processamento.

      SKIP( -1 )

   ENDDO
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

processar arquivo DBF do final para o começo

Mensagem por porter »

Valeu Kapiaba, obrigado .
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

processar arquivo DBF do final para o começo

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

processar arquivo DBF do final para o começo

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

processar arquivo DBF do final para o começo

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

processar arquivo DBF do final para o começo

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
aferra
Usuário Nível 1
Usuário Nível 1
Mensagens: 41
Registrado em: 30 Mai 2008 06:55
Localização: Ribeirão Preto/SP

processar arquivo DBF do final para o começo

Mensagem 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. )
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

processar arquivo DBF do final para o começo

Mensagem 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 )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder