ADO - Bloqueio de páginas ou bloqueio de registros ?
Acho que a esta altura você já deve estar escolado sobre como funciona o bloqueio de registros com DAO . Para relembrar você pode ler o artigo - Redes Programas Multiusuários . Também já tratamos deste assunto com relação a ADO , e você pode ler o artigo - Criando um aplicação Multiusuário com ADO . Neste dica apenas vamos por os pingos nos is...
Para fazer sua aplicação Visual Basic com acesso a banco de dados via DAO ou ADO funcionar em um ambiente multiusuário é só compartilhar o banco de dados. Até aqui tudo bem...
O grande problema e a grande maioria das dúvidas ocorrem com relação a que atitude tomar quando dois usuários acessam o mesmo registro para fazer alterações , ou um o que fazer quando um usuário tentar acessar um registro que acabou de se excluído ? Tudo bem você deve travar o registro/página , mas como a ADO funciona neste quesito e o que ela trouxe de novo ???
Ao utilizar a DAO , todos já devem saber , o travamento era feito exclusivamente por páginas , i.e, você não conseguia travar um registro , trava uma página inteira com um determinado número de registros.
Com o advento da ADO e a partir da versão 4.0 do Jet Engine do Access você pode travar um registro do banco de dados. Traçamos assim a hierarquia do travamento :
"Mas o que eu devo fazer para que ao abrir um banco de dados com ADO o travamento de registros seja habilitado ?" . Boa Pergunta ! A resposta é - "Absolutamente Nada !".
Isto mesmo , você não precisa fazer nada , pois o este é o estado padrão para um banco de dados Access aberto via ADO. Você pode explicitar isto usando o parâmetro : Database Locking Mode = 1. Assim:
conexao = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SeuArquivo & ";Jet OLEDB;Database Locking Mode=1
O travamento por página ainda é utilizado quando você executa comandos SQL para Excluir ( Delete ) , Atualizar ( Update ) dentre outros e para atualizações em campos do tipo MEMORANDO e em campos INDEXADOS.
No demais para tratar os conflitos de acesso simultâneo aos registros da tabela você apenas deve escrever uma rotina para travar o registro e verificar se ocorre um erro ; se o erro ocorrer você deve interceptá-lo e responder conforme o tipo de erro.
Até mais...