Página 1 de 1
testar se arquivo dbf ja esta sendo usado...help
Enviado: 23 Abr 2007 16:49
por scom
ola amigos..
é o seguinte tenho um arquivo dbf que eu só quero usar ele exclusive e queria testar se ele ja esta em uso antes do comando USE e dar uma mensagem para o usuário tipo: O ARQUIVO ESTA EM USO.
se alguem souber como eu posso fazer isso.
atenciosamente
robson
Enviado: 23 Abr 2007 16:59
por Pablo César
Oi Robson,
Eu acostumo fazer assim:
Código: Selecionar todos
SELE 2
USE ("SPC.DBF") EXCLUSIVE
ENQUANTO=NETERR()
DO WHILE ENQUANTO=.T.
BEEP()
BEEP()
BEEP()
ALERT("Para efetivar atualização, solicite pro outro terminal sair;para a tela principal e aguarde a liberação.;;Confirme quando for OK.")
SELE 2
USE ("SPC.DBF") EXCLUSIVE
ENQUANTO=NETERR()
ENDDO
MEMOWRIT("EXCLUSIVO.SPC","")
CLOSE 2
COPY FILE("C:SPC.DBF") TO ("SPC.DBF")
DELETE FILE("C:SPC.DBF")
DELETE FILE("EXCLUSIVO.SPC")
Eu tenho um arquivo SPC.DBF que grava no C: de um determinado terminal (não do servidor de rede) e para atualizar o arquivo faço esse procedimento. Nessa hora (talvez as vezes dependendo o tamanho, poderia demorar, então quando os outras estações intentarem abrir o arquivo SPC.DBF do servidor, irá verificar se não existe antes o arquivo EXCLUSIVO.SPC. Que me serve como semáforo (vamos dizer assim) para que não seja aberto em modo compartilhado até que não termine de copiar. É mais uma precaução.
Espero ter ajudado. Um clip-abraço :)Pos
Enviado: 23 Abr 2007 17:11
por MARCELOG
O uso exclusivo do arquivo falhará se o arquivo já estiver em uso exclusivo, compartilhado ou somente leitura(?). Essa última condição eu nunca testei.
Então, basta testar o retorno da função Neterr().
MarceloG
Enviado: 23 Abr 2007 17:20
por Pablo César
Isso mesmo Marcelo, funciona em todos os modos em que é aberto o DBF. E geralmente não é tanto a espera dos outros terminais. Ao final de contas é´muito útil para fazer atualizações dos BDs ONLINE.