Redes - Acesso Exclusivo e Compartilhado.
|
Conteúdo
|
Este projeto é bem simples mas serve para analisarmos como o Jet se comporta
quando da abertura de arquivos em modo exclusivo e compartilhado em ambiente
multiusuário.
Iremos abrir o arquivo Biblio.mdb que esta no diretório c:\teste em modo
exclusivo e ver o como o Jet responde a uma tentativa de abrir o mesmo arquivo
por outro usuário primeiro em modo exclusivo e depois em modo compartilhado.Depois
inverteremos os modos para ver o resultado.
Você não precisa instalar este aplicativo em uma rede para testar o compartamento
da abertura dos arquivos no modo exclusivo e no modo compartilhado.
Para a coisa funcionar basta você abrir duas instâncias do aplicativo
e colocar as janelas lado a lado.
Vamos ao Projeto , simples por sinal:
1-Crie um novo projeto denominado redes1.vbp. No form1 crie os objetos
e as propriedades como listadas na tabela 1.0 e grave o formulário com o nome
redes1.frm.
Tabela 1.0 - Objetos e propriedades do form redes1.frm.
----------------------------------------------------------------------------
Objeto Propriedade Configuração
----------------------------------------------------------------------------
Form Name redes1.frm
Caption Arquivo Fechado
----------------------------------------------------------------------------
Frame Name frame1
Caption Modo de Acesso
---------------------------------------------------------------------------
OptionButton Name optexclusivo
Caption Modo Exclusivo
Value True
---------------------------------------------------------------------------
OptionButton Name optcompartilhado
Caption Modo Compartilhado
---------------------------------------------------------------------------
CommandButton Name cmdAbrir
Caption "&Abrir Arquivo"
---------------------------------------------------------------------------
CommandButton Name cmdFechar
Caption "&Fechar Arquivo"
Enabled False
---------------------------------------------------------------------------
CommandButton Name cmdSair
Caption "&Sair"
Cancel True
---------------------------------------------------------------------------
2-Eis código do projeto :
- Option Explicit
Dim db as Database
Dim dbname as String
- Private Sub CmdAbrir_Click()
'inicia o tratamento de erros
On Error GoTo AbrirError
'Localiza e abre o banco de dados conforme as opções do sistema.
dbname="C:\TESTE\BIBLIO.MDB"
set db = DbEngine.Workspaces(0).OpenDataBase(dbname,iif(optexclusivo,True,False))
'Mostra na barra do formulário através da propriedade Caption o modo
de abertura do arquivo.
Me.Caption = iif(optcompartilhado, "Modo Compartilahdo", "Modo Exclusivo")
'Alterna os botões para Abrir e/ou Fechar conforme a opção escolhida
e abandona a procedure.
cmdFechar.Enabled = True
cmdAbrir.Enabled = False
Exit Sub
'Inicia o tratamento de erros.
AbrirError:
Dim msg as String
if Err= 3356 then
'Este erro ocorre quanto o usuário tenta abrir um arquivo que
já está aberto no modo exclusivo ou quando o usuário tenta
abrir no modo exclusivo um arquivo que já está aberto
quer no modo exclusivo quer no modo compartilhado.
if optcompartilhado then
'O usuário tentou abrir o arquivo no modo compartilhado mas
o mesmo já estava aberto no modo exclusivo.
msg = "O arquivo esta aberto no modo exclusivo ,"
msg = msg & " você não pode abri-lo agora, tente mais tarde."
else
'O usuário tentou abrir o arquivo no modo exclusivo mas
o mesmo já estava aberto por outro usuário.
msg = "O arquivo já está aberto, e você não pode abri-lo "
msg = msg & " no modo exclusivo agora, tente mais tarde "
endif
Else
'Se ocorrer qualquer outro erro...
msg = Err.Description
Endif
'Mostra a mensagem de erro ao usuário e sai da procedure.
MsgBox msg , vbExclamation
Exit Sub
End Sub
- Private Sub cmdFechar_Click()
'1-Fecha o arquivo
2-alterna as opções dos botões de abertura e fechamento do arquivo
3-altera o status da barra do formulário.
db.close
cmdAbrir.enabled = True
cmdFechar.enabled = False
Me.Caption = " Arquivo Fechado "
End Sub
- Private Sub cmdSair_Click()
End
End Sub
3-Depois de pronto compile o projeto e execute duas instâncias do aplicativo
e coloque as janelas lado a lado como a fig 1.0 abaixo:
fig 1.0
1 - Primeiro abra o arquivo em modo exclusivo na janela da esquerda.
- Feito isto tente a mesma coisa na janela da direita
- Você recebera uma mensagem de erro informando que o banco de dados já esta
aberto
2 - Agora abra o arquivo no modo compartilhado na janela da esquerda.
- Abra o arquivo no mesmo modo na janela da direita
- Observe que agora você tem o arquivo aberto nas duas instâncias do aplicativo.
- Feche o arquivo e tente abrí-lo no modo exclusivo na janela da direita.
- O Jet retornará uma mensagem de erro.
Até mais...
Retorna