segunda-feira, 18 de dezembro de 2017
DVD
ConteÚdo
DOWNLOADS
Interação
dicas aleatórias
Dica #3
Ovos de Páscoa no Access 97
Publicado: 31/01/2004

Dicas

Como forçar todos os usuários a saírem do MDB na rede
Autor:  Paulo Bliknstein (http://www26.brinkster.com/accessjr/)
Publicado:  31/01/2004
Visitas: 9323
 
Às vezes é necessário forçar a saída de todos os usuários logados no mdb, especialmente quando o administrador precisa efetuar atualizações na versão do aplicativo, realizar uma operação de backup etc.

Um método simples para atingir esse objetivo é o seguinte:

1. Identifique um formulário que permaneça aberto o tempo todo (um menu principal, por exemplo). Se não houver, crie um formulário desse tipo mesmo que fique oculto e não sirva para outro propósito.

2. No evento No Cronômetro (OnTimer) desse formulário, escreva um código que verifique a existência de um determinado arquivo na rede local. Este arquivo pode chamar-se "kickout.txt" e não precisa ter nada dentro, pois a finalidade é saber se ele existe ou não. Eu uso uma linha de código como essa:

If Len(Dir("\TheServer\vol\access\kickout.txt")>0 Then DoCmd.Quit


3. Na propriedade Intervalo do cronômetro (TimerInterval) desse formulário, atribua um valor em milissegundos correspondente ao intervalo de tempo desejado para pesquisar a existência do arquivo kickout.txt. NOTA: A propriedade Intervalo do cronômetro aceita valores (Inteiro longo) entre 0 e 2.147.483.647.

4. Certifique-se de que a string (path do arquivo kickout.txt) é um caminho UNC que possa ser "enxergado" (lido) por todos os usuários. Ou seja, o caminho UNC faz com que não importe o mapeamento da letra do drive.

5. Então, quando você quiser que todos saiam do mdb ("kick out"), simplesmente crie o arquivo "kickout.txt" no diretório da rede referenciado no código. No intervalo de tempo definido no passo 3, o evento No cronômetro (OnTimer) irá disparar e todos os usuários logados terão o Access encerrado.

Observações
a) O código do passo 2 é simples para efeito de ilustração. Portanto, seria melhor criar um formulário de aviso, informando ao usuário (com letras grandes, em vermelho, com Beeps etc) que o aplicativo será fechado em 30 segundos (defina um novo TimerInterval para esse formulário de aviso), permitindo ao usuário concluir algo que esteja fazendo.

b) Certamente este método pode ser burlado por usuários mais espertos, bastando fechar o formulário de aviso ou o formulário principal. Porém, geralmente, eles entendem a necessidade de sair do aplicativo quando visualizam as letras vermelhas...

c) Utilize a mesma técnica com arquivos message.txt para enviar mensagens personalizadas para todos os usuários. Exemplo: novas versões, novos menus etc.

Outra maneira usando Access 2000
Uma das novidades do Jet 4.0, usado pelo Access 2000, é a propriedade "passive connection control", que permite colocar o banco de dados em um estado no qual novos usuários não possam logar-se, mantendo apenas os usuários logados no momento. Se alguém tentar abrir o arquivo, receberá mensagens de erro, como se o banco de dados já estivesse sendo executado em modo exclusivo. Uma vez que você tenha definido esta propriedade, use o formulário de exemplo para ajudá-lo a enviar um aviso qualquer pela rede para os usuários ainda conectados ao mdb, pedindo que saiam do sistema.
Para utilizar este importante recurso, rode o seguinte código:

Dim cn As New ADODB.Connection
Set cn = CurrentProject.Connection ‘Altere para abrir outro mdb.
cn.Properties("Jet OLEDB:Connection Control") = 1


Para voltar ao estado anterior, altere o valor da propriedade para 2:

cn.Properties("Jet OLEDB:Connection Control") = 2


Nota: Você precisa ter a permissão "Abrir Exclusivo" (Open Exclusive) sobre o banco de dados, para que possa modificar a propriedade Connection Control.

  « Voltar

   Copyright © Ativo Access 2003 - 2017- Todos os direitos reservados   Política de Privacidade | Fale conosco