Error DBFNTX/1010 Read error (DOS Error 5)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

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

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por JoséQuintas »

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)

Código: Selecionar todos

#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 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
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

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'!!

Código: Selecionar todos

function ExisteVar(cName) 
return TYPE(cName) <> "U"
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

bom dia..

hoje ja deu nessas linhas:

Código: Selecionar todos

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

Código: Selecionar todos

EMP->(Dbsetorder(03))
EMP->(Dbgotop()) &&<-----essa linha q deu erro
obs:o mesmo arquivo.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por Kapiaba »

Código: Selecionar todos

   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
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

Kapiaba escreveu:
usando o ErrorBlock() em linha ou

Código: Selecionar todos

Procedure ErrorSys()
    ErrorBlock( {|e| DefError(e)} )
return .t.
?
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por Kapiaba »

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

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por Kapiaba »

CORROMPA(Adulterar) um indice.cdx e vá testando.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por alxsts »

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:

Código: Selecionar todos

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

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por Kapiaba »

Verifique também se os índices não estão corrompidos.
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

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!!!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por alxsts »

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:

Código: Selecionar todos

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)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

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!!!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por alxsts »

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)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Error DBFNTX/1010 Read error (DOS Error 5)

Mensagem por juniorcamilo »

amigos ...

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