Página 1 de 2
DOS Error 2
Enviado: 17 Set 2021 17:40
por ssflavio
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!
DOS Error 2
Enviado: 17 Set 2021 18:20
por JoséQuintas
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.
DOS Error 2
Enviado: 17 Set 2021 18:46
por alxsts
Olá!
Talvez um SET DEFAULT ajude...
Código: Selecionar todos
// 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
DOS Error 2
Enviado: 17 Set 2021 18:53
por ssflavio
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
Código: Selecionar todos
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()
DOS Error 2
Enviado: 17 Set 2021 19:13
por JoséQuintas
Primeira coisa é reescrever essa rotina de forma decente.
Acho que é um milagre ela funcionar.
Só estas duas possibilidades já deixa esquisito funcionar:
Código: Selecionar todos
USE ARQUIVO ALIAS &("")
SET INDEX TO &("nome1"), &( "" ), &( "" ), &( "" ), &( "" )
DOS Error 2
Enviado: 17 Set 2021 19:15
por Itamar M. Lins Jr.
Olá!
Use a nova sintaxe do Harbour.
Coloque o caminho do indice:
Em outra parte do seu sistema pode está trocando ou mudando de diretório.
Saudações,
Itamar M. Lins Jr.
DOS Error 2
Enviado: 17 Set 2021 19:16
por Itamar M. Lins Jr.
Olá!
...
Segure a onda Quintas, tenha fé!
Saudações,
Itamar M. Lins Jr.
DOS Error 2
Enviado: 17 Set 2021 19:18
por JoséQuintas
Editei a mensagem, mas postou em seguida, antes de eu terminar.
Dê uma olhada com as alterações.
DOS Error 2
Enviado: 17 Set 2021 19:23
por Itamar M. Lins Jr.
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.
DOS Error 2
Enviado: 17 Set 2021 19:35
por JoséQuintas
Funcionaria mesmo no Clipper, mas teria que criar a função hb_Default() no Clipper:
Código: Selecionar todos
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()
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:
DOS Error 2
Enviado: 17 Set 2021 19:45
por JoséQuintas
Se por acaso quiser criar a função hb_Default() no Clipper ou no XHarbour: ( no harbour já tem )
Código: Selecionar todos
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.
Código: Selecionar todos
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.
DOS Error 2
Enviado: 17 Set 2021 19:50
por JoséQuintas
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.
DOS Error 2
Enviado: 17 Set 2021 19:56
por JoséQuintas
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
DOS Error 2
Enviado: 17 Set 2021 20:02
por JoséQuintas
Só um comentário, de coisas desse tipo:
Outro dia criei uma função pra retornar valor do SQL.
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
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.
DOS Error 2
Enviado: 17 Set 2021 20:33
por Jairo Maia
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...