Clipper On Line • Ver Tópico - Problema com Flagship

Problema com Flagship

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

 

Problema com Flagship

Mensagempor JoséQuintas » 27 Jan 2019 20:04

To falando que esse troço é esquisito....

É uma rotina meio básica.
Tem um arquivo com contas, e outra com movimentação.
A rotina vai recalcular os saldos.

Esta funciona, pego uma conta de cada vez do cadastro de contas, pesquiso na movimentação pra fazer os cálculos.

#include "inkey.ch"

FUNCTION f_orgCx()

   LOCAL nSaldo, cConta, nKey := 0

   IF ! MsgNoYes( "Processo demorado. Confirma recalculo?" )
      RETURN NIL
   ENDIF
   IF ! AbreArquivos( "BCAIX", "BMVCX" )
      RETURN NIL
   ENDIF
   Mensagem( "Recalculando" )
   SELECT BMVCX
   SET ORDER TO 4
   SELECT BCAIX
   GOTO TOP
   DO WHILE nKey != K_ESC .AND. ! Eof()
      nSaldo := BCAIX->VALOR_INI
      SELECT BMVCX
      SEEK BCAIX->Cd_Caixa
      DO WHILE nKey != K_ESC .AND. BCAIX->Cd_Caixa == BMVCX->Cd_Caixa .AND. ! Eof()
         nKey := Inkey()
         nSaldo := nSaldo + iif( BMVCX->Flag == "C", BMVCX->Lan_Valor, 0 ) - iif( BMVCX->Flag == "D", BMVCX->Lan_Valor, 0 )
         IF BMVCX->Vl_Saldo != nSaldo // tentar agilizar
            BMVCX->( RecLock() )
            REPLACE BMVCX->Vl_Saldo WITH nSaldo
            BMVCX->( RecUnlock() )
         ENDIF
         SKIP
      ENDDO
      SELECT BCAIX
      RecLock()
      REPLACE ;
         BCAIX->Vl_Saldo WITH nSaldo, ;
         BCAIX->Dt_Saldo WITH Date()
      RecUnlock()
      SKIP
   ENDDO
   CLOSE DATABASES
   MsgExclamation( "Recalculo Efetuado" )

   RETURN NIL


Pra colocar gráfico de tempo, coloquei pra processar pelo arquivo de movimentação.

#include "inkey.ch"

FUNCTION f_orgCx()

   LOCAL nSaldo, cConta, nKey := 0

   IF ! MsgNoYes( "Confirma recalcular caixa?" )
      RETURN NIL
   ENDIF
   IF ! AbreArquivos( "BCAIX", "BMVCX" )
      RETURN NIL
   ENDIF
   SELECT BMVCX
   bmvcx->( dbSetOrder(4) )
   bmvcx->( dbGoTop() )
   nAtual := 0
   nTotal := bmvcx->( LastRec() )
   SayScroll( "Iniciando do while" )
   SayScroll("")
   DO WHILE nKey != K_ESC .AND. ! bmvcx->( Eof() )
      cConta := BMVCX->cd_Caixa
      BCAIX->( dbSeek( BMVCX->cd_Caixa ) )
      nSaldo := BCAIX->VALOR_INI
      SayScroll( "Conta " + cConta )
      SayScroll("")
      SayScroll( "vai iniciar o do while" )
      SayScroll("")
      DO WHILE nKey != K_ESC .AND. cConta == BMVCX->Cd_Caixa .AND. ! BMVCX->( Eof() )
         SayScroll( "dentro do do while" )
         SayScroll( "data " + Dtoc( BMVCX->Data ) +  " " + Str( BMVCX->( RecNo() ) ) )
         SayScroll("")
         nKey := Inkey()
         nSaldo := nSaldo + iif( BMVCX->Flag == "C", BMVCX->Lan_Valor, 0 ) - iif( BMVCX->Flag == "D", BMVCX->Lan_Valor, 0 )
         IF BMVCX->Vl_Saldo != nSaldo // tentar agilizar
            BMVCX->( RecLock() )
            REPLACE BMVCX->Vl_Saldo WITH nSaldo
            BMVCX->( RecUnlock() )
         ENDIF
         BMVCX->( dbSkip() )
      ENDDO
      SELECT BCAIX
      BCAIX->( RecLock() )
      REPLACE ;
         BCAIX->Vl_Saldo WITH nSaldo, ;
         BCAIX->Dt_Saldo WITH Date()
      BCAIX->( RecUnlock() )
      SELECT BMVCX
   ENDDO
   CLOSE DATABASES
   MsgExclamation( "Recalculo Efetuado" )

   RETURN NIL


Coloquei várias mensagens pra tentar descobrir o problema.
Não entra no DO WHILE, dá erro fatal e o Flagship aborta, sem referência aonde foi o erro.

Durante o post pensei numa possibilidade.... atualizar saldo de conta que não existe no cadastro.....

Nota:
No Harbour sem problemas, o erro é só no Flagship (Pelo menos esta versão antiga, deveria se chamar FlagSHIT)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema com Flagship

Mensagempor JoséQuintas » 27 Jan 2019 20:18

Eureka, era aquilo mesmo! No Flagship não pode atualizar quando em Eof().

Mas aproveitando... a diferença entre Windows e Linux.
No Linux, trabalhar com DBF é bem mais rápido.

flagship.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema com Flagship

Mensagempor JoséQuintas » 27 Jan 2019 20:29

flagship.png


No Flagship/Linux terminou em 11 minutos.
No Harbour/Windows, já se passaram 15 minutos e ainda vão mais 27 minutos.
O Linux está em uma máquina virtual, estou acessando remoto.
Já no Windows é local, máquina exclusiva.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema com Flagship

Mensagempor JoséQuintas » 27 Jan 2019 20:50

harbourlinux.png


Já que estava testando e tinha que aguardar terminar.....

Fiz um teste com Harbour no Microsoft Linux.

De 42 minutos pra 11 minutos a diferença já era grande....
Mas 1 único minuto... aí é pra ficar triste....

Exatamente mesmos arquivos no Windows 10, mesmos fontes, mesmo Harbour 3.4 - inclusive acesso simultâneo aos mesmos arquivos.
Um rodando no prompt Windows e outro no prompt Linux/Windows.
De 42 minutos pra 1 minuto.

Dá o que pensar....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes




Retornar para Bate Papo

Quem está online

Usuários vendo este fórum: Google [Bot] e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro