Moderado: requer conhecimentos básicos sobre macros, codificação e interoperabilidade.Este artigo aplica-se para uma base de dados do Microsoft Access (. mdb) e para um projecto do Microsoft Access (. adp).

Sintomas

Quando edita dados que utiliza vários formulários que tenham a mesma origem de registos, poderá receber a seguinte mensagem de erro:

Este registo foi alterado por outro utilizador desde que começou a editá-lo. Se guardar o registo, irá substituir as alterações feitas pelo outro utilizador. Copiar as alterações para a área de transferência será permitem-lhe observar os valores a outro utilizador introduziu e, em seguida, colar as alterações novamente se optar por efectuar alterações.

Em seguida, pode clicar das seguintes três botões:

  • Guardar registo

  • Copiar para área de transferência

  • Anular alterações

Causa

Este comportamento ocorre quando o utilizador abrir dois formulários que actualizam a mesma origem de dados ao mesmo tempo. No primeiro formulário coloca um bloqueio de edição sobre o registo ou registos e, em seguida, no segundo formulário altera o registo ou registos e guarda as alterações. Quando o primeiro formulário tenta fechar e escrever de volta para a tabela, são detectadas as alterações efectuadas pelo segundo formulário. Isto faz com que o erro ser devolvido.

Resolução

Para contornar este comportamento, utilize um dos dois métodos listados para um ficheiro de base de dados (. mdb) do Microsoft Access ou o método listado para um ficheiro de projecto (. adp) do Access.

Para um ficheiro de base de dados (. mdb) do Microsoft Access

Método 1

Defina a propriedade ProtecçõesDeRegistos do formulário para Registo editado. Para tal, siga estes passos:

  1. Abra o formulário na vista de estrutura. Nota No Access 2007, avance para o passo 3.

  2. No menu Ver , clique em Propriedades.

  3. No separador dados , altere a propriedade de Bloqueios de registo para Registo editado.

Método 2

Adicione código ao procedimento de evento AoDesactivar de ambos os formulários para guardar o registo. Para tal, siga estes passos:

  1. Abra o formulário na vista de estrutura. Nota No Access 2007, avance para o passo 4.

  2. No menu Ver , clique em Propriedades.

  3. No menu Editar , clique em Seleccionar formulário.

  4. No separador eventos , com o botão direito na caixa da propriedade AoDesactivar e, em seguida, clique em Criar.

  5. Na caixa Escolher construtor , faça clique sobre o Construtor de códigoe, em seguida, clique em OK.

  6. Escreva ou cole o seguinte código:

    DoCmd.RunCommand acCmdSaveRecord
  7. Abra o segundo formulário na vista de estrutura e repita os passos 2 a 6.

Para um ficheiro de projecto do Microsoft Access (. adp):

Adicione código para os procedimentos de evento AoDesactivar e AoActivar de ambos os formulários para guardar o registo. Para tal, siga estes passos:

  1. Abra o formulário na vista de estrutura. Nota No Access 2007, avance para o passo 4.

  2. No menu Ver , clique em Propriedades.

  3. No menu Editar , clique em Seleccionar formulário.

  4. No separador eventos , com o botão direito na caixa da propriedade AoDesactivar e, em seguida, clique em Criar.

  5. Na caixa Escolher construtor , faça clique sobre o Construtor de códigoe, em seguida, clique em OK.

  6. Escreva ou cole o seguinte código:

    DoCmd.RunCommand acCmdSaveRecord
  7. No menu ficheiro , clique em Fechar e regressar ao Microsoft Access.

  8. No separador eventos , com o botão direito na caixa da propriedade AoActivar e, em seguida, clique em Criar.

  9. Na caixa Escolher construtor , faça clique sobre o Construtor de códigoe, em seguida, clique em OK.

  10. Escreva ou cole o seguinte código:Nota o código de exemplo neste artigo utiliza Microsoft ActiveX Data Objects. Para este código seja executado correctamente, tem de referenciar o Microsoft ActiveX Data Objects 2. x biblioteca (onde 2. x é 2.1 ou posterior). Para tal, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se de que o Microsoft ActiveX Data Objects 2. x biblioteca caixa de verificação está seleccionada.

    Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
  11. Abrir no segundo formulário na vista de estrutura e, em seguida, repita os passos 2 a 10.

Mais Informações

Passos para reproduzir o comportamento no Access 2003

  1. Abra o Access.

  2. No menu Ajuda , aponte para Bases de dados exemploe, em seguida, clique em Dados de exemplo Adamastor.

  3. Na janela base de dados , clique em tabelas em objectose, em seguida, clique na tabela Empregados .

  4. No menu Inserir , clique em formulário automático.

  5. Guarde o formulário como frmNewEmployees.

  6. Abra o formulário Empregados e, em seguida, altere o campo nome para Nancy1.

  7. Abra o formulário de frmNewEmployees e, em seguida, altere o campo nome para Nancy2.

  8. Feche o formulário de frmNewEmployees.

  9. Feche o formulário de empregados. Repare que recebe a mensagem "Conflito de escrever" mencionada na secção "Sintomas" deste artigo.

Para obter informações adicionais, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:

304181 erro de conflito de escrita inesperado quando fecha um formulário

280730 ACC2000: erro de conflito de escrita, quando tentar actualizar registos numa tabela ligada do SQL Server

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?

Obrigado pelo seu feedback!

×