Clipper On Line • Ver Tópico - Error DBFNTX/1010 Read error (DOS Error 5)

Error DBFNTX/1010 Read error (DOS Error 5)

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 13 Mar 2017 16:27

este erro não é frequente...
e esta dando hora ou outra em seguintes linhas:

.....
return TYPE("EMPTER->QUAL") <> "U"

.........
EMP->(Dbgotop())

já verifiquei c arquivo esta danificado!! criei novo índice apagando o atual antes!!

algum amigo já passou por isso?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor JoséQuintas » 13 Mar 2017 21:29

DOS Error 5 é acesso bloqueado, e o erro é do sistema operacional - D.O.S.
À primeira vista não tem a ver com a linha do fonte.

Em todo caso, acho estranho usar Type() pra campo de arquivo.
Se o Clipper não tiver FieldNum(), crie uma rotina pra isso.

Por exemplo: (precisa testar se funciona no Clipper)

#include "directry.ch"

? Empter->( FieldExist( "QUAL" ) )
? Empter->( FieldExist2( "QUAL" ) )

FUNCTION FieldExist( cField  )

   LOCAL nCont, lExiste := .F.

   cField := Upper( cField )
   FOR nCont = 1 TO FCount()
      IF FieldName( nCont ) == cField
        lExiste := .T.
       EXIT
      ENDIF
   NEXT
   RETURN lExiste

FUNCTION FieldExist2( cField )

   RETURN AScan( dbStruct(), { | a | a[ F_NAME ] == Upper( cField ) } ) != 0
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: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 14 Mar 2017 07:47

JoséQuintas escreveu:DOS Error 5 é acesso bloqueado, e o erro é do sistema operacional - D.O.S.
À primeira vista não tem a ver com a linha do fonte.


tem como resolver para evitar esse erro?
Obs: apos eu criar uma "EXIT PROCEDURE FIM()" estou gravando a tela de erro, ai foi q constatei esse erro!!

JoséQuintas escreveu:Em todo caso, acho estranho usar Type() pra campo de arquivo.
Se o Clipper não tiver FieldNum(), crie uma rotina pra isso.


essa função c eu não me engano foi uns de seus help que vc passou para mim! Funcionou tao bem q uso ela para 'tudo'!!

function ExisteVar(cName) 
return TYPE(cName) <> "U"
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 14 Mar 2017 09:27

bom dia..

hoje ja deu nessas linhas:

use &nomarq. new alias &aliarq. via DBFNTX  &&<-----essa linha q deu erro
If neterr() == .t.
             .....
endif


e

EMP->(Dbsetorder(03))
EMP->(Dbgotop()) &&<-----essa linha q deu erro


obs:o mesmo arquivo.
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor Kapiaba » 14 Mar 2017 09:39

   IF UPPER(e:Description) = "LOCK REQUIRED"                  .OR. ;
      UPPER(e:Description) = "TRAVAMENTO REQUERIDO"           .OR. ;
      UPPER(e:Description) = "FALHA NO TRAVAMENTO"            .OR. ;
      UPPER(e:Description) = "FALHA NO TRAVAMENTO DO APPEND"  .OR. ;
      UPPER(e:Description) = "USO EXCLUSIVO REQUERIDO"        .OR. ;
      UPPER(e:Description) = "Erro DBFCDX/1002 erro ao Abrir" .OR. ;
      UPPER(e:Description) = "Erro DBFCDX/1002 erro Open (DOS Erro 2)" .OR. ;
      UPPER(e:Description) = "Error DBFCDX/1002 Open error"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1002 Open error (DOS Error 2)" .OR.;
      UPPER(e:Description) = "(DOS Error 2) DBFCDX/1002 ERRO DE ABERTURA" .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1001 erro ao Abrir"             .OR.;
      UPPER(e:Description) = "Erro DBFCDX/1001 erro Open (DOS Erro 2)"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1001 Open error"               .OR.;
      UPPER(e:Description) = "Error DBFCDX/1001 Open error (DOS Error 2)" .OR.;
      UPPER(e:Description) = "(DOS ERROR 2) DBFCDX/1001 ERRO DE ABERTURA" .OR.;
      UPPER(e:Description) = "(DOS ERROR 2) DBFCDX/1001 Open Error"       .OR.;
      UPPER(e:Description) = "Error DBFCDX/1201 WORKAREA NOT INDEXED"     .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1201 WORKAREA NÇO INDEXADA"    .OR.;
      UPPER(e:Description) = "Error DBFCDX/1012 Corruption detected"      .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1012 CORRUPTION DETECTED"      .OR.;
      UPPER(e:Description) = "Error DBFCDX/1210 Corruption detected"      .OR.;
      UPPER(e:Description) = "ERROR DBFCDX/1210 CORRUPTION DETECTED"      .OR.;
      UPPER(e:Description) = "(DOS ERROR 64) DBFCDX/1010  ERRO DE LEITURA".OR.;
      UPPER(e:Description) = "(DOS ERROR 64) DBFCDX/1010  READ ERROR"     .OR.;
      UPPER(e:Description) = "(DOS ERROR 87) DBFCDX/1010  ERRO DE LEITURA".OR.;
      UPPER(e:Description) = "(DOS ERROR 87) DBFCDX/1010  READ ERROR"     .OR.;
      UPPER(e:Description) = "(DOS Error 2) DBFCDX/1001 ERRO DE ABERTURA"

      MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO:                       " )+CRLF+ ;
               OemToAnsi( "O PROGRAMA                             " )+CRLF+ ;
               OemToAnsi( "DETECTOU PROBLEMAS NA ABERTURA DA REDE." )+CRLF+ ;
               OemToAnsi( "                                       " )+CRLF+ ;
               OemToAnsi( "DESCRI€ÇO: "+UPPER(e:Description)        )+CRLF+ ;
               OemToAnsi( "ÖNDICE...: "+LEFT(RIGHT(e:FileName,12),8)+".CDX" )+CRLF+ ;
               OemToAnsi( "                                       " )+CRLF+ ;
               OemToAnsi( "SAIA                           E ENTRE " )+CRLF+ ;
               OemToAnsi( "NOS PAR¶METROS          E REINDEXE     " )+CRLF+ ;
               OemToAnsi( "TODOS OS BANCOS DE DADOS               " )+CRLF+ ;
               OemToAnsi( "ISTO  UM AVISO DE ALGUM PROBLEMA.     " )+CRLF+ ;
               OemToAnsi( "SE PERSISTIR ESTE ERRO, RECOMENDAMOS,  " )+CRLF+ ;
               OemToAnsi( "CHAMAR SEU TCNICO DE INFORMµTICA E    " )+CRLF+ ;
               OemToAnsi( "PEDIR PARA ELE VER SUA PLACA DE REDE,  " )+CRLF+ ;
               OemToAnsi( "BEM COMO SEUS PENTES DE MEMàRIA E O    " )+CRLF+ ;
               OemToAnsi( "CABO DE REDE DE SEU COMPUTADOR.        " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...        " ),      ;
               OemToAnsi( "Possivel Problema na Sua Rede/Micro.   " ) )

   ENDIF
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 14 Mar 2017 11:58

Kapiaba escreveu:


usando o ErrorBlock() em linha ou
Procedure ErrorSys()
    ErrorBlock( {|e| DefError(e)} )
return .t.
?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor Kapiaba » 14 Mar 2017 15:05

Desculpe não posso ajudá-lo neste ponto, já que o meu ERRSYSW.PRG é for windows(fivewin), terás que tentar simular com o seu ERRORSYS.PRG ou pedir ajuda para quem usa MODO CONSOLE. Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor Kapiaba » 14 Mar 2017 15:06

CORROMPA(Adulterar) um indice.cdx e vá testando.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor alxsts » 14 Mar 2017 15:11

Olá!

DOS Error 5 é Sharing Violation ou violação de compartilhamento. Ocorre quando há acesso concorrente de mais de um usuário à mesma tabela.
juniorcamilo escreveu:1 use &nomarq. new alias &aliarq. via DBFNTX  &&<-----essa linha q deu erro

A causa provável dos teus problemas é que você não especifica se o modo de abertura da tabela é exclusivo ou compartilhado. Assim sendo, é aplicado o SET EXCLUSIVE configurado. Se não existir esta configuração, o arquivo é aberto em modo EXCLUSIVE, que é o default.

Veja a sintaxe do comando USE
USE
Open an existing database (.dbf) and its associated files
------------------------------------------------------------------------------
Syntax

USE [<xcDatabase>
[INDEX <xcIndex list>]
[ALIAS <xcAlias>] [EXCLUSIVE | SHARED]
[NEW] [READONLY]
[VIA <cDriver>]]


Altere seu código e aproveite para retirar estes operadores macro que degradam a performance e aumentam o tamanho do executável:
use ( nomarq ) new alias ( aliarq ) SHARED via DBFNTX
ou
use ( nomarq ) new alias ( aliarq ) EXCLUSIVE

JoséQuintas escreveu:Se o Clipper não tiver FieldNum(), crie uma rotina pra isso.


Acho que o Quintas quis se referir à função FieldPos().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor Kapiaba » 14 Mar 2017 16:07

Verifique também se os índices não estão corrompidos.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 14 Mar 2017 16:07

alxsts escreveu: Veja a sintaxe do comando USE


realmente não estava definindo SHARED!! alterei e vou testar!!!

Altere seu código e aproveite para retirar estes operadores macro que degradam a performance e aumentam o tamanho do executável:


é uma função de abertura geral para meus DBF!!vou mante-la!!

obrigado!!!
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor alxsts » 14 Mar 2017 16:16

Olá!

Ok mas não precisa usar macro operador. É só envolver as variáveis que contem os nomes do arquivo e seu alias em parêntesis, como mostrei:

Function AbreArq( nomarq, aliarq, lShared )

If lShared
      use ( nomarq ) new alias ( aliarq ) SHARED via DBFNTX
else
      use ( nomarq ) new alias ( aliarq ) EXCLUSIVE via DBFNTX
endif
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 14 Mar 2017 16:22

alxsts escreveu:Olá!

Ok mas não precisa usar macro operador. É só envolver as variáveis que contem os nomes do arquivo e seu alias em parêntesis, como mostrei:


"morro e não aprendo tudo mesmo!!!"

Obrigado mais uma vez não sabia q era possível!!!
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor alxsts » 14 Mar 2017 16:37

Olá!

Este post pode agregar algumas coisas. Procure nele uma função chamada NetUse(). Se você tem a instalação padrão do Clipper 5.xx, é capaz de tê-la instalada em sua máquina. Fica em um arquivo chamado Locks.Prg.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagempor juniorcamilo » 17 Mar 2017 10:16

amigos ...

acredito q foi uma falta de atenção por minha parte...
em certo local dos meus fontes descobri a falta de um 'unlock'!!
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 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