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: 1058
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: 1914
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: 1058
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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 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: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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