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.