Travar Arquivo
Moderador: Moderadores
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Travar Arquivo
Bom dia
Pessoal, estou colocando meu sistema em rede... agora a dúvida
Como faço para verificar se outra estação está com um determinado DBF aberto?
Preciso saber isso pois tenho a rotina de recriar os índices do sistema, mas para isso o sistema tem que alertar se o DBF está aberto em outra estação.
Obrigado.
Pessoal, estou colocando meu sistema em rede... agora a dúvida
Como faço para verificar se outra estação está com um determinado DBF aberto?
Preciso saber isso pois tenho a rotina de recriar os índices do sistema, mas para isso o sistema tem que alertar se o DBF está aberto em outra estação.
Obrigado.
Piter Galdiano
Programador Clipper
Programador Clipper
Lá vai...
Até logo.
Marcelo
Código: Selecionar todos
DO WHIL .T.
USE MEUDBF EXCLUSIVE
IF NETERR()
@ 24,00 SAY "O arquivo esta em uso..."
ELSE
EXIT
ENDIF
INKEY(.5.)
ENDDO
INDEX ON CODIGO TO MEUDBF
...
...
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Prezado Piter
Acontece que você precisa abrir os arquivos em modo SHARED e apenas abrir em modo EXCLUSIVE e ou executar um FLOCK() quando for necessário. Provavelmente os arquivos estão sendo abertos em modo EXCLUSIVE e por isso do erro.
Lembre-se que por padrão o Clipper abre os arquivos em modo EXCLUSIVE sendo necessário especificar a opção SHARED quando se deseja compartilhar.
Até logo.
Marcelo
Acontece que você precisa abrir os arquivos em modo SHARED e apenas abrir em modo EXCLUSIVE e ou executar um FLOCK() quando for necessário. Provavelmente os arquivos estão sendo abertos em modo EXCLUSIVE e por isso do erro.
Lembre-se que por padrão o Clipper abre os arquivos em modo EXCLUSIVE sendo necessário especificar a opção SHARED quando se deseja compartilhar.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Vc esta mandando abrir o arquivo em modo exclusivo.
Vc deve verificar se consegue bloquear o arquivo com FLOCK().
Ai testar o neterr() para saber se foi ou não possível bloquear o arquivo.
Se foi possível bloquear o arquivo, feche e abra em modo exclusivo para depois indexar o mesmo.
Vc deve verificar se consegue bloquear o arquivo com FLOCK().
Ai testar o neterr() para saber se foi ou não possível bloquear o arquivo.
Se foi possível bloquear o arquivo, feche e abra em modo exclusivo para depois indexar o mesmo.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Faça um teste com este função:
Passe como parametro o nome do arquivo, não serve alias pois a tentativa de abertura se dará no arquivo fisico.
Código:
Faça um teste com este função:
Código: Selecionar todos
FUNCTION dblocked( dbf )
ldbf := FOPEN( dbf, 1 )
IF FERROR() <> 0
RETURN .t.
ENDIF
FCLOSE(ldbf)
RETURN .f.
Código:
Código: Selecionar todos
...
if dbLocked( "CLIENTES.DBF" )
? "Arquivo travado em algum lugar"
else
USE clientes EXCLUSIVE
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
