VBA Access - Erro 3052

O número de bloqueios de compartilhamento de arquivos foi excedido.

Hello folks!

Vez por outra somos surpreendido por alguns erros nas nossas aplicações MS Access, os quais não fazemos ideia do que sejam (vá se acostumando).

Um dos erros que nos surpreendem, pegando-nos desprevenidos, é o erro 3052 ele aparece quando o número de bloqueios de compartilhamento de arquivos foi excedido, o valor padrão é 9.500. Sem nos apercebermos disso, excedemos o número máximo de bloqueios permitidos em um recordset, este limite é especificado pela definição MaxLocksPerFile no Registro do sistema.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet
4.0\MaxLocksPerFile

Como eliminá-lo? Aumente a entrada de registro MaxLocksPerFile, o valor padrão pode ser alterado por meio da edição do Registro com Regedit.exe ou com o método SetOption.

Application.DBEngine.SetOption dbMaxLocksPerFile, <NumLocks>

Altere o <NumLocks> para 1000000 ou algo maior do que 10000 (um milhão poupará você de aplicar esse truque mais vezes) e o erro irá embora. Certifique-se de colocar a linha acima na sua subroutina, e evoque-a a partir do seu FORM principal.

Outros fatores que podem fazer o seu aplicativo atingir este limite são:

  • quantidade de memória disponível
  • tamanho das linhas no recordset
  • restrições no sistema operacional da rede

Mais detalhes: Inicializando o driver de mecanismo de banco de dados do Microsoft Jet 3.5
                       Personalizando configurações do Registro do Windows para Microsoft Jet


Pois é, desse erro você já se livrou .  .  .  Mas .  .  . outros virão...


André Luiz Bernardes

Nenhum comentário:

Postar um comentário

diHITT - Notícias