Página 1 de 1

Erro ao abrir um DBF em rede

Enviado: 22 Mar 2013 10:01
por josecmar
O servidor e a estação de trabalho rodam com o Windows 7
Quando inicio o executável na estação, surge a mensagem de erro de abertura do DBF logo na primeira rotina:

use USUARIO index iUSUARIO new ("Error DBFNTX/1001 - Open error: usurario.dbf")

A mensagem acusa a inesistência dos arquivos, que na verdade estão lá, pois o programa é executado sem erros no servidor.
Abri o DBU.exe na estação, e o mesmo também não mostra nenhum arquivo .dbf ou .ntx.
No servidor a pasta c:\ está compartilhada com acesso total.

Erro ao abrir um DBF em rede

Enviado: 22 Mar 2013 10:19
por Pablo César
Seja bem vindo ao fórum !

Pelo que parece esse erro é porque não conseguiu abrir o usuario.dbf (notar se o nome não foi errado). Quando se trata de abrir dbfs em rede, deve ser feito o tratamento de insistência e erro. Pois se o seu dbf por ventura foi aberto em modo exclusivo (sem o parâmetro SHARED, isto é, modo compartilhado) ele não vai permitir abrir por outra estação e eis o erro.

Erro ao abrir um DBF em rede

Enviado: 22 Mar 2013 15:39
por Eolo
Vc diz que no servidor funciona e na estação, não. Bem, o comando USE, isolado, faz o Clipper procurar pelo DBF na mesma pasta onde o EXE foi iniciado.

Então, pelo que parece, o DBF está no servidor, por isso lá funciona e na estação, não. A solução é (sempre) indicar ao Clipper onde o DBF está:

SET DEFAULT TO \\nomeservidor\pastadbf
use USUARIO index iUSUARIO new

Além disso, verifique cada passo da abertura. Exemplo:

Código: Selecionar todos

set defa to \\servidor\pasta
erro=.t.
do whil .t.
  if !file(\\servidor\pasta\usuario.dbf) // arquivo DBF não existe
    exit
  endi
  use usuario new 
  if neterr()=.t. // comando USE não foi bem sucedido
    exit
  endi
  if !file(\\servidor\pasta\iusuario.ntx) // se indice não existir, criar
    index on ... // cria o indice
  endi 
  set index to iusuario // abre o indice
  erro=.f.
  exit
endd
if erro=.t.
  * erro
  quit
endi