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 :

  1. Travamento do Banco dados
    1. Travamento da tabela
      1. Travamento de registros

"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...