Clipper On Line • Ver Tópico - DOS Error 2

DOS Error 2

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

DOS Error 2

Mensagempor ssflavio » 17 Set 2021 17:40

Boa tarde amigos!

Depois que migrei o sistema de clipper para harbour, tem ocorrido com muita frequencia o seguinte erro:

Error DBFNTX/1003 Erro de abertura: SGC_RMO6.ntx (DOS Error 2)

é uma rede pequena, com uns 6 usuarios e o servidor é um windows7 com pasta compartilhada

gratidão pela ajuda!
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 18:20

Diz que trocou pra Harbour.... por acaso foi pelo antigo 3.0 ?? ele tinha certos problemas referente à pasta atual, e já deve ter uns 10 anos ou mais.

A princípio também, considere que Harbour NÃO é DOS, é Windows.
É importante que o EXE saiba qual é a pasta atual.
Se está criando atalho, confirme que o atalho está indicando a pasta correta, NÃO basta que indique somente o EXE com path completo.
Uma coisa é criar o atalho a partir da pasta: clique da direita, enviar para, área de trabalho criar atalho.
E outra coisa é criar o atalho, procurar, localizar pasta, e indicar o EXE.
Apesar de parecer a mesma coisa, um coloca o PATH da pasta do EXE, e o outro deixa sem pasta default, que pode ser qualquer uma.

Depois disso eu diria:
Considere que não trocou, e veja porque acusa que o arquivo não existe, da mesma forma que faria com o Clipper, exceto pelo fato já mencionado, que Harbour é Windows.

Chamando por BAT também pode ser uma opção de fixar o nome da pasta, mas é desaconselhável, já que BATs estão deixando de existir no Windows há algum tempo, e o console está sendo substituído por: powershell, console Linux ou console Android.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor alxsts » 17 Set 2021 18:46

Olá!

Talvez um SET DEFAULT ajude...
// The example demonstrates the effect of changing the default
// drectory of an xHabour application.

   PROCEDURE Main
      SET PATH TO
      ? File( "Customer.dbf" )         // Result: .F.

      SET DEFAULT TO C:\xhb\data
      ? File( "Customer.dbf" )         // Result: .T.

      SET DEFAULT TO C:                // define default drive
      SET DEFAULT TO ..                // Change to parent directory
      SET DEFAULT TO \                 // Change to root directory

   RETURN
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

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

DOS Error 2

Mensagempor ssflavio » 17 Set 2021 18:53

Obridago pelas dicas!
o harbour que estou usando é o 3.2
esse erro não da sempre, somente quando quer
suponha que deu o erro agora, ai ele fecha o sistema. É só abrir o sistema novamente que ele funciona.
será que estou fazendo alguma coisa errada???
vou postar a rotina de abertura dos arquivos

function NET_ARQ

parameters PFILE,PINDEX,PEXCLU,APELID

private I,INDICE1,INDICE2,INDICE3,INDICE4,INDICE5,INDICE6,INDICE7,INDICE8,LERRO

APELID = if(type('APELID') # 'C','',APELID)
PINDEX = if(type('PINDEX') # 'C','',PINDEX)
PEXCLU = if(type('PEXCLU') # 'L',.F.,PEXCLU)
LERRO  := st()

sele 0
for I = 1 to 10
   if PEXCLU
      use &PFILE. exclusive alias &APELID.
   else
      use &PFILE. alias &APELID.
   endif
   if used()
      exit
   endif
   format('Tentando abrir '+PFILE,24,'C')
   inkey(1)
next
rt(LERRO)
if used()
   INDICE1 = parse(@PINDEX)
   INDICE2 = parse(@PINDEX)
   INDICE3 = parse(@PINDEX)
   INDICE4 = parse(@PINDEX)
   INDICE5 = parse(@PINDEX)
   INDICE6 = parse(@PINDEX)
   INDICE7 = parse(@PINDEX)
   INDICE8 = parse(@PINDEX)
   set index to &INDICE1.,&INDICE2.,&INDICE3.,&INDICE4.,&INDICE5.,&INDICE6.,&INDICE7.,&INDICE8.
endif
return used()

Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:13

Primeira coisa é reescrever essa rotina de forma decente.
Acho que é um milagre ela funcionar.

Só estas duas possibilidades já deixa esquisito funcionar:

USE ARQUIVO ALIAS &("")

SET INDEX TO &("nome1"), &( "" ), &( "" ), &( "" ), &( "" )
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor Itamar M. Lins Jr. » 17 Set 2021 19:15

Olá!

APELID = if(type('APELID') # 'C','',APELID)

Use a nova sintaxe do Harbour.
hb_default(@APELID,'')
hb_default(@PEXCLU,.F.)

Coloque o caminho do indice:
 set index to c:\lugar_do_NTX\arquivo1.ntx, ...

Em outra parte do seu sistema pode está trocando ou mudando de diretório.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 5556
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 205 vezes
Mens.Curtidas: 323 vezes

DOS Error 2

Mensagempor Itamar M. Lins Jr. » 17 Set 2021 19:16

Olá!
...

Segure a onda Quintas, tenha fé!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 5556
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 205 vezes
Mens.Curtidas: 323 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:18

Editei a mensagem, mas postou em seguida, antes de eu terminar.
Dê uma olhada com as alterações.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor Itamar M. Lins Jr. » 17 Set 2021 19:23

Olá!
Acho que é um milagre ela funcionar.

Eu também faço isso... As coisas aqui funcionam por milagres ás vezes. rsrsrsrs

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 5556
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 205 vezes
Mens.Curtidas: 323 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:35

Funcionaria mesmo no Clipper, mas teria que criar a função hb_Default() no Clipper:


FUNCTION NET_ARQ( cDBFName, cIndexList, lExclusive, cAlias )

   LOCAL I, lErro, cNtxName, lIndex := .F.

   hb_Default( @cAlias, "" )
   hb_Default( @cIndexList, "" )
   hb_Default( @lExclusive, .F. )
   lErro := st()

   SELECT 0
   FOR I = 1 to 10
      IF lExclusive
         IF Empty( cAlias )
            USE ( cDbfName ) EXCLUSIVE
         ELSE
            USE ( cDbfName ) EXCLUSIVE ALIAS &( cAlias )
         ENDIF
      ELSE
         IF Empty( cAlias )
            USE ( cDBFName )
         ELSE
            USE ( cDBFName ) ALIAS &( cAlias )
         ENDIF
      ENDIF
      IF used()
         EXIT
      ENDIF
      format( 'Tentando abrir ' + cDBFName, 24, 'C' )
      Inkey(1)
   NEXT

   rt( lErro )

   IF Used()
      DO WHILE ! Empty( cNtxName := Parse( @cIndexList ) )
         dbSetIndex( cNtxName )
         lIndex := .T.
      ENDDO
      IF lIndex
         SET ORDER TO 1
      ENDIF
   ENDIF

   RETURN Used()


A lista de índices, também poderia ser array, o que talvez simplificasse.
NÃO sei o que Parse() faz, provavelmente daria pra substituir por hb_RegExSplit()

&( expressao )


Isso permite fazer macro do resultado da expressao, ao invés da variável diretamente.
Evita gambiarra, e no Harbour evita problemas com variáveis LOCAL.
E expande possibilidades:
&( "indice" + Str( 1, 1 ) )
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:45

Se por acaso quiser criar a função hb_Default() no Clipper ou no XHarbour: ( no harbour já tem )

FUNCTION hb_Default( xVar, xDefault )

   IF ValType( xVar ) != ValType( xDefault )
       xVar := xDefault
   ENDIF

   RETURN Nil


Se o tipo da variável for diferente do default, o que inclui Nil - nada - assume o default.

LOCAL x, y := "a"
   hb_Default( @x, 1 )
   hb_Default( @y, 2 )


Isso vai deixar x=1, porque x não tem conteúdo
Isso vai deixar y=2, porque y contém "a" que não é numérico, e 2 é numérico.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:50

Só um comentário extra:

Isso mostra que, se alterar o fonte Clipper pra funcionar no Harbour, ainda vai funcionar em Clipper.
Não precisa ter fontes diferentes pra cada um, é só ajustar o fonte pra funcionar nos dois.
Isso é interessante durante a fase de migração, assim pode voltar pro Clipper ou Harbour na hora que quiser.

Uma vez funcionando 100% em Harbour... aí pode fazer a festa, e não precisa mais ser compatível.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 19:56

Acho que é um milagre ela funcionar.


Isso é pra chamar a atenção de que a rotina precisa ser reescrita/ajustada/melhorada.
Deve usar trocentas vezes essa rotina, e pode ter trocentos problemas.
Se der uma geral, evita trocentos erros que poderiam surgir durante ou depois.

É que tem horas, que se só falando assim pra gente mexer numa rotina antiga, ainda mais quando ela continua funcionando na maioria das vezes... rs
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor JoséQuintas » 17 Set 2021 20:02

Só um comentário, de coisas desse tipo:

Outro dia criei uma função pra retornar valor do SQL.
:ReturnValue( "1 + 1" )


Funcionou direito.
Só que comecei a errar, porque oras eu colocava "1+1", oras eu colocava "SELECT 1+1"

Solução:
Alterei o nome da função
:ReturnSelect( "1+1" )


E alterei todos os fontes aonde já tinha usado a função.

Deu trabalho? alterar algo que já funcionava e já estava em uso?
Sim... Mas agora não esqueço mais que não precisa o SELECT kkkk

Como eu digo sempre: o fonte é PRA NÓS, e não para o computador.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

DOS Error 2

Mensagempor Jairo Maia » 17 Set 2021 20:33

ssflavio escreveu:Depois que migrei o sistema de clipper para harbour, tem ocorrido com muita frequencia o seguinte erro:

Error DBFNTX/1003 Erro de abertura: SGC_RMO6.ntx (DOS Error 2)
Verifique se esse servidor está usando recursos de economia de energia. Se estiver, desative. Servidores não podem usar recursos que deixam o HDD desligar ou ficar em soneca, no primeiro momento ocorre exatamente o que relatou, depois ao tentar novamente o HDD já acordou e dá certo. Verifique se não é isso...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2615
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 344 vezes
Mens.Curtidas: 288 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Ahrefs [Bot], Toledo e 13 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