Página 1 de 1
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 24 Ago 2017 20:52
por Voteia
Procurei em todo o Fórum e não encontrei problema semelhante.
Tenho um sistema rodando a mais de 16 anos.
A última compilação que fiz, e que roda sem problema foi em 2010 com vários usuários utilizando os arquivos do computador central.
Porém, no inicio deste ano me pediram manutenção do Sistema.
Como eu havia perdido o emu HD onde estavam todos os programas, tive que recorrer aos bakcup´s para recompor nova área de trabalho.
Como refiz os arquivos ".bat", ".clp" e de linkedição, creio que alguma coisa se perdeu e que não aceita mais a utilização do Sistema pelos Usuários de outros equipamentos que não seja o do computador Central, ocasionando o
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo (DOS ERROR 123)
Quando os Usuários utilizam o Executável que fiz em 2010, eles conseguem acessar todos os arquivos normalmente.
Pergunto aos colegas do Fórum, se esqueci de algum comando de compilação ou linkedição que possa ocasionar este erro.
Lembro ainda que todo o Sistema foi desenvolvido em 32 bits.
Como troquei de equipamento para 64 bits e Notebook, fui obrigado a catar um equipamento de 32 bits só para fazer estas alterações de suma importância para o Cliente e criar uma Rede semelhante para fazer os testes.
Por favor, alguém tem ideia de onde estou errando?
Grato a todos..
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 08:35
por Jairo Maia
Olá Voteia,
Seja bem vinda ao Fórum.
O que significa isso?: \\(unidade)\c:\pasta\arquivo
Isso não seria a variável que deveria conter a unidade do mapeamento?
Você está acessando com mapeamento ou direto pelo caminho da rede? Este caminho está errado, seja qual for a forma de acesso.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 12:40
por Daniel
Ola
olha e que fala o erro dos 123
"Illegal character or invalid file-system name."
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 14:36
por JoséQuintas
Deveria ser Arquivo
Isso permitiria rodar em qualquer lugar
ou no máximo \pasta\arquivo
Pra rodar em qualquer "drive"
c:\oasta\arqyuivo já impede de centralizar
\\servidor\pasta\arquivo, já permite centralizar em algum lugar, mas fixo no computador que foi definido
\\(unidade)\c:\pasta\arquivo, isso já é impossível de existir
Veja nos fontes, ou se existir alguma configuração, aonde alterar isso.
Tá tudo aí com você.
Não tem como ninguém saber o que fez, só você mesmo.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 14:49
por Voteia
Amigos, os três.
Acabei de relatar tudo que vinha fazendo porém, parece que perdi ao enviar.
quis achar pra onde foi, mas perdi.
Vou fazer tudo o que vocês estão orientando pra lograr êxito.
Só sei dizer que: dá maneira que está, funcionou por muito tempo (10 anos +-) e agora está dando este problema.
Vou trabalhar na orientação de vocês e depois relato os ocorridos.
Desde já, sou-vos grato.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 15:03
por Voteia
Amigos,
Como eu tinha que testar o acesso na minha área de trabalho para certificar que os acessos de usuários ao computador centralizador ocorreia, eu criei estas condições para criar diversos caminhos.
Vejam a idade do Sistema:
/* -----------------------------------------------------------------------
Programa : ECPRIN.PRG
Sistema : COFSE (CONTROLE OPERACIONAL E FINANCEIRO DE SERV.EXECUTADO)
Finalidade : MODULO PRINCIPAL DO SISTEMA
Programador : <Sosthenes> - Clipper 5.0.
Data de Inicio Programa‡Æo : 23/02/97
éltima Altera‡Æo : 16/08/97
VersÆo : 1.0
----------------------------------------------------------------------
*/
IF FILE('C:/COFSE/COFSE.EXE').and.; && SERVIDOR DA CS (ARCELI)
!file('c:/CLIPPER/cofse.exe')
*
* && AQUI O SERVIDOR DA CS, A (ARCELI)
*
if programa='COFSE' && SE O PROGR COFSE
if year(dtmv)<year(date()) && ANOS ANTERIORES
c_red := 'd:\cof_'+alltrim(str(year(dtmv)))+'\'
else && ANO ATUAL
c_red := 'c:\cofse\'
endi
else && SE O PROGR BUSIN
if year(dtmv)<year(date()) && ANOS ANTERIORES
c_red := 'd:\bus_'+alltrim(str(year(dtmv)))+'\'
else && ANO ATUAL
c_red := 'c:\busin\'
endi
endi
CORRFAT()
*
**
*
ELSE
*
** AQUI TEM O SERVIDOR (DOPAI), USUARIOS (DOPAI) E USUARIOS DA (ARCELI)
*
if file('c:/CLIPPER/cofse.exe') && AQUI O SERVIDOR (DOPAI) E SEUS USUARIOS
*
w_seim = .t.
*
if file('c:/cofse/cofse.exe') && AQUI O (DOPAI)
if programa='COFSE'
if year(dtmv)<year(date())
c_red := 'd:\cof_'+alltrim(str(year(dtmv)))+'\'
else
c_red := 'c:\clipper\'
endi
else
if year(dtmv)<year(date())
c_red := 'd:\bus_'+alltrim(str(year(dtmv)))+'\'
else
c_red := 'c:\clipper\'
endi
endi
CORRFAT()
else && AQUI SAO OS USUARIOS DO (DOPAI)
destino := 'DoPai'
if programa='COFSE'
if year(dtmv)<year(date())
c_red := '\\'+alltrim(destino)+'\d:\cof_'+alltrim(str(year(dtmv)))+'\'
else
c_red := '\\'+alltrim(destino)+'\c:\cofse\'
endi
else
if year(dtmv)<year(date())
c_red := '\\'+alltrim(destino)+'\d:\bus_'+alltrim(str(year(dtmv)))+'\'
else
c_red := '\\'+alltrim(destino)+'\c:\busin\'
endi
endi
set path to &c_red
endi
else && USUARIOS DO SERVIDOR DA CS,(DA ARCELI)
*
destino := 'Financeiro_01'
if programa='COFSE' && SE O PROGR COFSE
if year(dtmv)<year(date())
c_red := '\\'+alltrim(destino)+'\d:\cof_'+alltrim(str(year(dtmv)))+'\'
else
c_red := '\\'+alltrim(destino)+'\c:\cofse\'
endi
else && SE O PROGR BUSIN
if year(dtmv)<year(date())
c_red := '\\'+alltrim(destino)+'\d:\bus_'+alltrim(str(year(dtmv)))+'\'
else
c_red := '\\'+alltrim(destino)+'\c:\busin\'
endi
endi
endi
*
endi
São vários usuários e dois programas semelhantes só mudando o nome da empresa.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 15:09
por Voteia
Vejam..
Todos utilizam o programa COFSE.EXE através de atalho buscando-o no "Financeiro_01", centralizador do Sistema, onde consultam e atualizam os arquivos ali contidos.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 15:54
por JoséQuintas
O problema não é a idade do programa, é o fonte ruim mesmo.
Era mais fácil ter feito pra trabalhar na pasta atual, e apenas fazer um seletor de pastas.
Pra complicar ainda mais, não basta esse fonte pra definir as pastas, temc coisas que vém de outras rotinas.... rs
Com certeza, esse programa não é o principal, porque usa coisas que não tem aí. DTMV não existe.
Código: Selecionar todos
// -----------------------------------------------------------------------
Programa : ECPRIN.PRG
Sistema : COFSE ( CONTROLE OPERACIONAL E FINANCEIRO DE SERV.EXECUTADO )
Finalidade : MODULO PRINCIPAL DO SISTEMA
Programador : < Sosthenes > - Clipper 5.0.
DATA de Inicio Programa‡Æo : 23 / 02 / 97
éltima Altera‡Æo : 16 / 08 / 97
VersÆo : 1.0
----------------------------------------------------------------------
// /
IF File( 'C:/COFSE/COFSE.EXE' ) .AND. !File( 'c:/CLIPPER/cofse.exe' ) // SERVIDOR DA CS (ARCELI)
//
// && AQUI O SERVIDOR DA CS, A (ARCELI)
//
IF programa = 'COFSE' // SE O PROGR COFSE
IF Year( dtmv ) < Year( Date() ) // ANOS ANTERIORES
c_red := 'd:\cof_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE // ANO ATUAL
c_red := 'c:\cofse\'
ENDIF
ELSE // SE O PROGR BUSIN
IF Year( dtmv ) < Year( Date() ) // ANOS ANTERIORES
c_red := 'd:\bus_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE // ANO ATUAL
c_red := 'c:\busin\'
ENDIF
ENDIF
CORRFAT()
//
// *
//
ELSE
//
// * AQUI TEM O SERVIDOR (DOPAI), USUARIOS (DOPAI) E USUARIOS DA (ARCELI)
//
IF File( 'c:/CLIPPER/cofse.exe' ) // AQUI O SERVIDOR (DOPAI) E SEUS USUARIOS
//
w_seim = .T.
//
IF File( 'c:/cofse/cofse.exe' ) // AQUI O (DOPAI)
IF programa = 'COFSE'
IF Year( dtmv ) < Year( Date() )
c_red := 'd:\cof_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := 'c:\clipper\'
ENDIF
ELSE
IF Year( dtmv ) < Year( Date() )
c_red := 'd:\bus_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := 'c:\clipper\'
ENDIF
ENDIF
CORRFAT()
ELSE // AQUI SAO OS USUARIOS DO (DOPAI)
destino := 'DoPai'
IF programa = 'COFSE'
IF Year( dtmv ) < Year( Date() )
c_red := '\\' + AllTrim( destino ) + '\d:\cof_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := '\\' + AllTrim( destino ) + '\c:\cofse\'
ENDIF
ELSE
IF Year( dtmv ) < Year( Date() )
c_red := '\\' + AllTrim( destino ) + '\d:\bus_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := '\\' + AllTrim( destino ) + '\c:\busin\'
ENDIF
ENDIF
SET PATH TO &c_red
ENDIF
ELSE // USUARIOS DO SERVIDOR DA CS,(DA ARCELI)
//
destino := 'Financeiro_01'
IF programa = 'COFSE' // SE O PROGR COFSE
IF Year( dtmv ) < Year( Date() )
c_red := '\\' + AllTrim( destino ) + '\d:\cof_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := '\\' + AllTrim( destino ) + '\c:\cofse\'
ENDIF
ELSE // SE O PROGR BUSIN
IF Year( dtmv ) < Year( Date() )
c_red := '\\' + AllTrim( destino ) + '\d:\bus_' + AllTrim( Str( Year( dtmv ) ) ) + '\'
ELSE
c_red := '\\' + AllTrim( destino ) + '\c:\busin\'
ENDIF
ENDIF
ENDIF
//
ENDIF
De qualquer forma, que eu saiba esse tipo de mapeamento não existe, e não lembro se algum dia existiu.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 16:01
por JoséQuintas
Se é Clipper, TALVEZ recuperar os fontes a partir do EXE.
Provavelmente deve ter mais IFs adicionados aí depois.... rs
Enviado: 25 Ago 2017 17:20
por Voteia
Sim, tem mais Ifs depois destes.
Esses Ifs são só para definir o caminho para o Usuário.
O erro se dá quando do acesso ao arquivo.
Funciona da seguinte forma até o erro:
Depois de definido o caminho para quem é Usuário, eu chamo a rotina "códigos" para acessar o arquivo de dados fixos.
*
CODIGOS()
*
*
PROCEDURE CODIGOS
*
r_arq = CRede('EcFixo')
*
if !netuse(r_arq,'Codigos',.f.,10) && 50
Mens(' O Arquivo de C¢digos Fixo NÆo Est Dispon¡vel ! ',8,1)
endi
cf_clcli := fx_clcli
cf_clrec := fx_clrec
cf_dcaix := fx_dcaix
cf_doven := fx_doven
cf_drebr := fx_drebr
cf_ichon := fx_ichon
cf_icimp := fx_icimp
cf_cchem := fx_cchem
cf_ctcai := fx_ctcai
cf_ctove := fx_ctove
cf_cdchi := fx_cdchi
cf_dchem := fx_dchem
cf_csint := fx_csint
cf_cdcli := fx_cdcli
cf_cdemi := fx_cdemi
if year(dtmv)<year(date())
cf_hoapr := 12
else
cf_hoapr := val(fx_hoapr)
endi
*
RETU
*
Com esta Função "CRede" eu completo o caminho com o nome do arquivo, que neste caso é "ExFixo".
*-*-*-*-*-*-*-*-*-*
Function CREDE
Parameters i_cam
r_arq = c_red+i_cam
retu(r_arq)
*-*-*-*-*-*-*-*-*-*
Com esta função "Netuse" é que eu aloco o arquivo para uso individual ou compartilhado conforme a necessidade.
Neste momento, em um dos "USEs" abaixo, é que acontece o tal erro que coloquei no título:
ERROR DBFNTX/1001 OPEN ERROR.....
Function Netuse
*
* Objetivo..: Tenta abrir um arquivo exclusivo ou compartilhado
* Define os ¡ndices se bem sucedidos.
* Parametros:
* 1 - Caracter > Nome do ARQuivo e APElido a ser aberto.
* 2 - L¢gico > Mode de abertura (EXclUS/comp)
* 3 - Num‚rico > Segundos de TEMPO de espera (0 = para sempre)
Parameters arq,ape,exuse,tempo
Private sempre
sempre = (tempo = 0)
set color to w+*
*Aviso(24,'Aguarde... Tentando Acesso aos Arquivos')
set color to
do while (sempre.or.tempo > 0) .and. inkey() <> 27
if exuse && exclusivo
use &arq alias &ape new exclusive
else && compartilhado
use &arq alias &ape new
endi
if .not. neterr() && USE bem sucedido
*** @ 24,00 clear
retu(.t.)
endi
inkey(1)
--tempo
endd
***@ 24,00
retu(.f.)
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 17:29
por Voteia
Ha!
Todos os arquivos são chamados passando pela Função CRede e depois por Netuse.
O arquivos, após sair de uma rotina, são liberados para uso geral.
Estou gostando da confusão, pois quanto mais difícil, mais se raciocina.
Obrigado mais uma vez pela ajuda.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 18:13
por JoséQuintas
Depois que conseguir resolver, ainda tem o fato de que os fontes podem não servir, pois se tratam de backup que pode não corresponder ao que estava rodando.
Talvez a opção de recuperar fontes seja "menos ruim".
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 18:27
por JoséQuintas
Na verdade tá fácil resolver.
É só remover todo lixo do fonte, e trabalhar na pasta atual.
A pasta atual vai valer pra qualquer pasta.
A não ser, é claro, que tenha mais confusão sobre pastas.
À primeira vista, só a "pasta centralizadora" é que precisaria ser definida, se existir uma.
Tem que entender aonde estão OS ARQUIVOS DE HOJE, e não como estava o fonte antigamente.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 25 Ago 2017 20:28
por Voteia
Vocês me auxiliaram bastante. Só tenho a agradecer.
Já tenho material para voltar às tentativas e aos testes.
Vou mergulhar de cabeça nessas orientações de vocês e ver o que consigo avançar.
Como o cliente consegue trabalhar com os dois programas, fico tranquilo para dispensar mais tempo em achar a solução.
O Cliente sabe que as coisas que não mudei, que foram muitas, ele e os usuários pegam com o programa antigo. As poucas alterações, só podem ser usadas entrando pelo computador centralizador.
Agora vou parar um pouco os acessos ao Fórum e me dedicar as alterações.
Tão logo tenha algo expressivo, reporto neste POST.
Abraços a todos, vou a luta.
Bom Final de Semana a todos.
ERROR DBFNTX/1001 OPEN ERROR \\(unidade)\c:\pasta\arquivo
Enviado: 26 Ago 2017 20:20
por Voteia
Meus três Caros amigos...
As vezes achamos que o problema é imenso, e procuramos soluções grandiosas e depois deparamos que o empecilho era bem pequeno em tamanho mas que causava uma grande dor de cabeça.
Após passear durante o dia todo, resolvi agora me dedicar a descobrir o que me deixou durante muitos encucado.
"Illegal character or invalid file-system name."
Esta frase me deixou desconfiado. Ainda mais, porque o Daniel fez referencia a ela.
Juntei a frase do Daniel, mais a ideia de mapeamento do Jairo e as Rotas que o José Quincas mostrou e comecei a ver letra por letra do caminho que eu criava.
Observei, quando tentei mapear o Drive, que na mostragem da "propriedade" do arquivo, visto do equipamento do usuário, no caminho mostrado, o Drive, neste caso o "c:", não aparecia o "c" com o ":".
Daí, retirei da linha onde construo os variáveis caminhos, os "dois pontos" (:).
Compilei o Sistema normalmente e funcionou tranquilamente.
Resumindo: O Sistema Operacional novo não estava aceitando a indicação "c:" colocado no caminho estruturado para quem usasse os arquivos do equipamento centralizador. Porém o centralizador deve conter o "c:". Assim sendo, tudo continuará como estava mas sem os "dois pontos" (:) após a letra do Drive.
Meus amigos.
Sou muito gratos a vocês pois me ajudaram a raciocinar e resolver este problema.
Abraços a todos.