Página 2 de 2

O problema continua...

Enviado: 27 Jun 2007 00:20
por acelconsultoria
Olá amigos do forum !!!


Eu andei pesquisando por aqui e não encontrei nenhuma postagem que comentasse sobre a falha do comando NETERR() na versão 5.3a do clipper.

Sei que a maioria dos colegas daqui do forum estranhou, pois a sintaxe do comando NETERR() que o amigo Piter Galdiano postou está correta, e mesmo assim apresentava falhas, devido ao BUG existente.

O que acontece na verdade é que, quando se está com um arquivo aberto em modo SHARED, e tenta-se abrir o mesmo arquivo em outra estação em modo EXCLUSIVE, ou o inverso disso, o teste NETERR() é ignorado e aparece o ALERT de erro do clipper: "DOS Error 5", quando na verdade, o programa deveria retornar FALSE, para que o usuário aguarde a liberação do arquivo para poder usá-lo.

Inclusive, na própria documentação dos Patches do Clipper 5.3b, o tal erro é mencionado.

Se pegarmos uma simples rotina e rodá-la em duas estações, como por exemplo:

Código: Selecionar todos

   
   @ 05, 00 CLEAR TO 20, 79
   @ 05, 00 SAY "ABRIR EM <E> OU <C> ?"
   @ 06, 00 GET WOPC PICT "!" VALID WOPC $ "EC"
   READ

   IF WOPC = "E"
      SELE 1
      USE TESTE EXCLUSIVE NEW
   ELSE
      SELE 2
      USE TESTE SHARED NEW
   ENDIF

   IF NETERR()
      TONE(800,2)
      @ 10, 00 SAY "ERRO, ABRINDO: TESTE.DBF" 
   ELSE
      @ 10, 10 SAY "ARQUIVO ABERTO: TESTE.DBF"
   ENDIF
   INKEY(0)

RETURN .T.

Compilando essa rotina com o clipper 5.3, a função NETERR() funciona e retorna o erro, para que o sistema aguarde a liberação do arquivo. Com a versão 5.3a, o sistema dá erro.

Porém, na versão 5.3b, a documentação informa que o problema foi resolvido. Mas, como sempre existem as excessões, a versão 5.3b que eu possuo apresenta o mesmo problema.

Procurei pelos links disponíveis para download da versão 5.3b aqui no forum e baixei-as. Nenhuma funcionou.

Então, a solução foi apelar para uma outra solução, que é o exemplo que o Rochinha postou neste tópico.

Mas, em todo caso, se alguém possuir esse Patch da versão 5.3b que funcione corretamente e puder me enviar por e-mail ou disponibilizar um link aqui no forum, eu agradeço.

Abraços a todos !!!

Maickon Sato

Deu certo, agora !!!

Enviado: 27 Jun 2007 09:48
por acelconsultoria
Realmente, os patches que eu havia baixado, estavam com algum problema. Mesmo seguindo toda a "regra" de instalação, instalando primeiro o clipper 5.3, os patches do 5.3a e, finalmente, o patch do 5.3b, os problemas com a função NETERR() ainda continuaram.

Mas achei esse link aqui, no site PUXAKI.

http://www.puxaki.com.br/procurar.php?i ... &powered=0

É só baixar o arquivo "Clipper53b.rar", descompactá-lo todo na pasta do clipper e recompilar. Problema resolvido !!!

Abraços a todos !!!

Enviado: 27 Jun 2007 10:07
por Pablo César
Puxa Maickon ! Você levantou um tema que pelo que eu vejo não tinha sido percebido antes para aqueles que usam a versão 5.3 do Clipper. Eu não cheguei testar, mas devo agradecer e parabenizá-lo pelo seu empenho e indicação. Vou ataulizar o meu Clipper 5.3 e reportarei qualquer observação que mereça atenção. Valeu !

Realmente...

Enviado: 27 Jun 2007 14:51
por acelconsultoria
Obrigado !!! Procuro sempre contribuir na medida do possível, já que tenho bem menos experiência em relação a maioria dos membros desse forum.

Mas é isso aí, Pablo. Percebi que, de uma forma muito estranha, em determinadas situações, meu sistema provocava alguma falha, mas que tava muito difícil de adivinhar. Foi quando suspeitei da função NETERR() e criei um programa a parte, só pra testá-la.

Aí juntei todas as versões do clipper e do xHarbour que tenho e vi que em todas funcionaram, menos na 5.3a.

Apesar da dica do Rochinha ajudar bastante, não resolve 100% do problema, já que o programador teria que desenvolver uma rotina muito extensa (como eu desenvolvi), com vários testes em FOPEN(), porque existe a necessidade de se "advinhar' como o DBF está (fechado, SHARED, EXCLUSIVE, na máquina local, em alguma outra estação). E o NETERR() já é feito pra isso mesmo, né ?

Abraços a todos !!!