O bloqueio exclusivo é necessário para salvar alterações de design em objetos access

Número de KB original: 283228

Observação

Avançado: requer habilidades de codificação, interoperabilidade e multioperabilidade de especialistas. Este artigo se aplica apenas a um banco de dados do Microsoft Access (.mdb e .accdb).

Sintomas

Ao tentar personalizar barras de ferramentas ou abrir um formulário do Microsoft Access, relatório, macro ou módulo no modo Design, você receberá a seguinte mensagem:

Você não tem acesso exclusivo ao banco de dados no momento. Se você continuar a fazer alterações, talvez não seja possível salvá-las mais tarde.

Ao tentar salvar as alterações de design feitas em um formulário de acesso, relatório, macro ou módulo, você recebe a seguinte mensagem:

Você não tem acesso exclusivo ao banco de dados no momento. Suas alterações de design não serão salvas.

Ao tentar salvar uma nova página de acesso a dados, você receberá a seguinte mensagem:

Um link para essa página de acesso a dados não pôde ser criado porque o banco de dados não pode ser bloqueado exclusivamente.

Motivo

  • Você está tentando abrir um formulário, relatório, macro, módulo ou barra de comandos no modo design.
  • Você está tentando salvar alterações de design em um desses tipos de objeto ou em um novo link de página enquanto outros usuários têm o mesmo banco de dados aberto.

Para salvar alterações de design nesses tipos de objeto, o Access deve ser capaz de obter um bloqueio exclusivo no banco de dados.

Resolução

Em situações em que vários desenvolvedores estão projetando um aplicativo Access simultaneamente, você deve implementar o controle de código-fonte usando o Suplemento do Microsoft Visual SourceSafe para o Microsoft Access. Ou você deve distribuir cópias de trabalho locais do banco de dados para cada desenvolvedor. Segue-se uma discussão sobre cada uma dessas opções.

Implementando o controle de código-fonte

O Microsoft Access Visual SourceSafe Add-In permite que você coloque seu aplicativo Access sob controle de código-fonte enquanto ele estiver em desenvolvimento. Se você colocar seu aplicativo sob controle de código-fonte, isso permitirá que você acompanhe e armazene as alterações feitas em seu aplicativo ao longo do tempo. Usando o Microsoft Visual SourceSafe, você pode examinar o histórico de um objeto e, em seguida, reverter para versões anteriores de um objeto. Você pode marcar objetos no aplicativo microsoft access, modificá-los ou criar novos objetos em sua cópia local e, em seguida, marcar-los de volta para o banco de dados main sob controle de código-fonte. O Microsoft Access Visual SourceSafe Add-In está disponível com o Microsoft Office XP Developer. Para usar o Microsoft Access Visual SourceSafe Suplemento, você também deve instalar o Microsoft Visual SourceSafe, que também está disponível com o Microsoft Office XP Developer, separadamente.

Usando bancos de dados de trabalho individuais

Outra opção que você pode implementar é manter uma cópia master do aplicativo de banco de dados em um local centralizado e, em seguida, usar cópias de trabalho individuais do banco de dados no computador de cada desenvolvedor. Cada desenvolvedor desenvolveria parte individual do aplicativo na cópia de trabalho local do banco de dados. Quando os desenvolvedores querem fazer uma alteração em um objeto no aplicativo de banco de dados, eles importarão o objeto do banco de dados master para o banco de dados de trabalho local. Em seguida, os desenvolvedores fariam as alterações necessárias no objeto no banco de dados de trabalho local e salvariam o objeto. Quando os desenvolvedores estiverem prontos para confirmar as alterações no banco de dados master, eles exportariam o objeto para o banco de dados master, substituindo o objeto original.

Uma desvantagem de usar essa abordagem é que não há como determinar se vários desenvolvedores estão trabalhando simultaneamente no mesmo objeto localmente. Quando o desenvolvedor exporta o objeto para o banco de dados master, o desenvolvedor pode substituir sem saber as alterações que outro desenvolvedor se comprometeu com o banco de dados master.

Informações adicionais

Para salvar alterações de design em objetos específicos do Access, como formulários, relatórios, novos links de página, macros, módulos e barras de comando, o Access 2002 deve ser capaz de bloquear o banco de dados exclusivamente durante a operação Salvar . Tabelas, consultas e relações não se enquadram nessa restrição porque são objetos específicos do Microsoft Jet. A Microsoft usa esse requisito com o Access 2002 por vários motivos:

  • Ele fornece consistência com outros aplicativos cliente do Visual Basic Environment.
  • Ele interrompe a dependência do mecanismo de banco de dados jet.
  • Ele melhora a estabilidade de objetos específicos do Access.

Fornece consistência com outros aplicativos cliente de ambiente do Visual Basic

Como o Access 2002 hospeda o ambiente do Visual Basic, o modelo de salvamento usado pelo Microsoft Access deve ser consistente com outros aplicativos que hospedam o ambiente do Visual Basic. O ambiente do Visual Basic só permite a edição exclusiva e a salvação de projetos do Visual Basic que não estão sob controle de código-fonte. Isso se aplica ao Visual Basic 6.0 e a todos os aplicativos do Office que hospedam o ambiente do Visual Basic.

Interrompe a dependência do mecanismo de banco de dados jet

O Access oferece a capacidade de criar arquivos do projeto do Microsoft Access (.adp) e também bancos de dados do Microsoft Access (.mdb). Usando um projeto do Access, os desenvolvedores podem usar o Microsoft SQL Server como outro mecanismo de banco de dados para o Microsoft Jet. No passado, todos os objetos específicos do Access (formulários, relatórios, macros, módulos e barras de comando) eram dependentes do mecanismo de banco de dados jet para armazenamento. Esses objetos foram armazenados em tabelas de sistema específicas do Access no banco de dados do Microsoft Jet. Como é possível que o Access use o Microsoft SQL Server como alternativa ao Microsoft Jet, a Microsoft teve que desenvolver um mecanismo de armazenamento para objetos específicos do Access que não dependem do mecanismo de banco de dados Jet.

Melhora a estabilidade de objetos específicos do Access

O modelo de armazenamento do projeto melhora a estabilidade dos objetos específicos do Access e do projeto do Visual Basic. Visual Basic for Applications nunca permitiu a edição de vários usuários de projetos do Visual Basic sem controle de código-fonte. O Microsoft Access 95 e o Microsoft Access 97 poderiam contornar essa restrição ocultando as alterações de projeto feitas em um ambiente de vários usuários de Visual Basic for Applications e, em seguida, mesclando-as ao projeto mais tarde. No entanto, isso tinha o potencial de afetar a estabilidade do projeto do Visual Basic. Portanto, o Microsoft Access requer um bloqueio exclusivo ao projetar objetos específicos do Access para garantir que o projeto tenha apenas um editor.

Editando objetos access em um ambiente de vários usuários

Como os usuários podem abrir um banco de dados para uso exclusivo ou compartilhado, o comportamento de salvamento exibido pelo Access depende de como o usuário abriu o banco de dados e se vários usuários estão acessando-o no momento.

Se um desenvolvedor abrir o banco de dados para uso exclusivo, o desenvolvedor poderá salvar o design de qualquer objeto específico do Access, desde que o desenvolvedor possa abrir o banco de dados para acesso de leitura/gravação e tiver as permissões corretas para modificar o design do objeto.

Se um usuário abrir o banco de dados para uso compartilhado, o usuário poderá salvar o design de qualquer objeto específico do Access, desde que o usuário possa abrir o banco de dados para acesso de leitura/gravação, tiver as permissões corretas para modificar o design do objeto e o Access poderá obter um bloqueio exclusivo no banco de dados.

Bloquear promoção

Para garantir que o uso do banco de dados seja exclusivo, o Access usa o recurso de controle de conexão do mecanismo de banco de dados Jet para promover o bloqueio compartilhado do usuário para exclusivo. O Access tenta promover um bloqueio compartilhado em um bloqueio exclusivo assim que o usuário abre um formulário, relatório, macro ou barra de comandos no modo design. O Access tenta bloquear a promoção neste momento, a fim de impedir o cenário em que um usuário fez várias alterações de design apenas para descobrir posteriormente que o usuário não pode salvá-los porque o Access não pode obter um bloqueio exclusivo. Ao tentar bloquear a promoção assim que o usuário abrir um objeto na exibição Design, o Access poderá avisar o usuário se ele não puder obter um bloqueio exclusivo antes que o usuário faça alterações de design. O Access não tentará bloquear a promoção ao abrir um módulo no modo design; no entanto, ele tentará bloquear a promoção assim que o usuário editar qualquer módulo no banco de dados.

O Access mantém o bloqueio exclusivo até que o usuário salve ou descarte todos os objetos sujo e nenhum outro objeto esteja aberto no modo Design. Depois disso, o Access rebaixa o bloqueio para compartilhado se o banco de dados foi originalmente aberto para uso compartilhado.

Se o Access não puder promover o bloqueio para exclusivo quando o usuário abrir um objeto na exibição Design, o Access alertará o usuário com a mensagem:

Você não tem acesso exclusivo ao banco de dados no momento. Se você continuar a fazer alterações, talvez não seja possível salvá-las mais tarde.

Após esta mensagem de aviso, o Access abrirá o objeto no modo design e permitirá que o usuário faça alterações de design. Se o usuário tentar salvar o objeto, o Access tentará promover o bloqueio compartilhado para exclusivo. Se a promoção de bloqueio for bem-sucedida, o Access salvará o objeto e manterá o bloqueio exclusivo até que o usuário salve ou descarte todos os outros objetos sujo e nenhum objeto permaneça aberto na exibição Design. Se a promoção de bloqueio falhar, o usuário receberá a seguinte mensagem:

Você não tem acesso exclusivo ao banco de dados no momento. Suas alterações de design não serão salvas.

Se o usuário tentar fechar o objeto sujo e salvar alterações, o Access solicitará ao usuário a opção de fechar o objeto e descartar alterações de design feitas nele ou com a opção de deixá-lo aberto e sem salvamento.

Etapas para reproduzir o comportamento

  1. Inicie duas instâncias do Microsoft Access no mesmo computador.

  2. Abra o Northwind.mdb de banco de dados de exemplo em ambas as instâncias.

  3. Na primeira instância do Microsoft Access, abra o formulário Clientes no modo design .

    Você recebe a mensagem:

    Você não tem acesso exclusivo ao banco de dados no momento. Se você continuar a fazer alterações, talvez não seja possível salvá-las mais tarde.

  4. Clique em OK para limpar a mensagem.

    O formulário é aberto na exibição Design .

  5. Adicione um controle de caixa de texto ao formulário.

  6. No menu Arquivo, clique em Salvar.

    Você recebe a seguinte mensagem:

    Você não tem acesso exclusivo ao banco de dados no momento. Suas alterações de design não serão salvas.

  7. Clique em OK para limpar a mensagem.

  8. Feche a segunda instância do Access em seu computador.

  9. Na primeira instância do Access, tente salvar o formulário novamente.

    O formulário é salvo com êxito.