Você pode receber uma mensagem de erro ao tentar inserir um novo registro em uma tabela que contém um campo AutoNumeração no Access 2007 ou no Access 2003

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 884185
Sintomas
Ao tentar inserir um novo registro em uma tabela que tem um campo AutoNumeração, você receberá a seguinte mensagem de erro:
As alterações solicitado para a tabela não foram bem-sucedidas porque eles criaria valores duplicados no índice, chave primária ou relação. Alterar os dados no campo ou campos que contêm dados duplicados, remova o índice, ou redefinir o índice para permitir entradas duplicadas e tente novamente.
Observação A tabela pode não ter quaisquer relacionamentos ou nenhum índice.

Esse problema ocorre no Microsoft Office Access 2007 ou no Microsoft Office Access 2003.
Causa
Esse problema pode ocorrer quando as seguintes condições forem verdadeiras:
  • O banco de dados Access foi compactado.
  • A tabela contém um campo AutoNumeração que não é reseeded corretamente.
  • Instalar o Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8).
  • Acrescentar dados da tabela vinculada 1 para a tabela vinculada 2 usando a opção de Banco de dados atual em vez da opção de Outro banco de dados . Em seguida, excluir o registro de tabela vinculada 1 e reappend o mesmo registro da tabela vinculada 2 usando a opção de Banco de dados atual .
Resolução

O Access 2007

Recrie as consultas acréscimo no banco de dados dbFrontEnd.accdb. Para fazer isso, clique em Acrescentar no grupo Tipo de consulta na guia Design e, em seguida, clique em Outro banco de dados .

O Access 2003

Recrie as consultas acréscimo no banco de dados dbFrontEnd.mdb. Para fazer isso, clique em Consulta acréscimo na consulta menu na consulta criar modo de exibição e clique em outro banco de dados .
Como Contornar
Para contornar esse problema, você deve compactar o banco de dados e redefina a propagação de campo AutoNumeração. Para compactar o banco de dados, execute estas etapas:
  1. Inicie o Access.
  2. Abra o banco de dados.

    Observação Se você vir a caixa de diálogo de aviso de segurança, clique em Abrir .
  3. o Access 2007
    • Clique no Botão Microsoft Office , aponte para Gerenciar e, em seguida, clique em Compactar e reparar banco de dados .
    o Access 2003
    • No menu Ferramentas , clique em Utilitários de banco de dados e, em seguida, clique em Compactar e reparar banco de dados .
  4. Se você vir a caixa de diálogo de Aviso de segurança , clique em Abrir .
Para redefinir a propagação de campo AutoNumeração, use um dos seguintes métodos.

Método 1: Usar uma consulta de definição de dados

Abrir o banco de dados com a tabela (banco de dados back-end) no Access 2007

  1. Na guia criar , clique em Design da consulta no outro grupo.
  2. Na caixa de diálogo Mostrar tabela , clique em Fechar .
  3. Na guia Design , clique em modo SQL no grupo de resultados .
  4. Digite o seguinte na janela Consulta1 :

    TableName do ALTER TABLE ALTER COLUMN AutoNumFieldName COUNTER (iMaxID, 1);

    Observação TableName é que um espaço reservado para o nome da tabela. AutoNumFieldName é um espaço reservado para o nome do campo AutoNumeração. iMaxID é um espaço reservado para o valor atual máximo no campo mais 1.
  5. Na guia Design , clique em Executar no grupo de resultados .

O Access 2003

  1. Na janela banco de dados, clique em consultas sob objetos .
  2. Clique em novo , clique em Design View e em seguida, clique em OK .
  3. Na caixa de diálogo Mostrar tabela , clique em Fechar .
  4. No menu consulta , clique em SQL específicas e clique em Definição de dados .
  5. Na janela de consulta de definição de dados, digite o seguinte:

    TableName do ALTER TABLE ALTER COLUMN AutoNumFieldName COUNTER (iMaxID, 1);

    Observação O espaço reservado TableName representa o nome da tabela. O espaço reservado AutoNumFieldName representa o nome do campo AutoNumeração. O espaço reservado iMaxID representa o valor atual máximo no campo mais 1.
  6. No menu consulta , clique em Executar .

Método 2: Executar código Visual Basic for Applications

  1. o Access 2007
    • Na guia criar , clique na seta para baixo em macro e, em seguida, clique em módulo .
    o Access 2003
    • Na janela banco de dados, clique em módulos em objetos e, em seguida, clique em novo .
  2. Cole o seguinte código no Editor do Visual Basic. iMaxID
    Sub ResetAuto()Dim iMaxID As Long Dim sqlFixID As String  iMaxID = DMax("<AutonumberFieldName>", "<TableName>") + 1                         sqlFixID = "ALTER TABLE <TableName> ALTER COLUMN <AutonumberFieldName> COUNTER(" & <iMaxID> & ",1)"          DoCmd.RunSQL sqlFixIDEnd Sub
    Observação O espaço reservado <AutonumberFieldName> representa o nome do campo AutoNumeração. O espaço reservado <TableName> representa o nome da tabela.
  3. No menu Executar , clique em Executar Sub/UserForm .
Observação Você deve fechar a tabela antes de usar qualquer método. Não é necessário salvar a consulta ou o módulo após usar o método com êxito.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informações

Etapas para reproduzir o comportamento no Access 2003

  1. Crie dois bancos de dados em branco novos e nomeá-los dbBE1.mdb e dbBE2.mdb.
  2. No banco de dados dbBE1.mdb, crie uma nova tabela que é chamada Table1 que contém os seguintes dois campos:
    • Campo1: AutoNumeração (chave primária)
    • Campo2: texto
  3. Adicione os seguintes seis registros a tabela 1.
    Campo1Campo2
    1UM
    2B
    3C
    4D
    5E
    6F
  4. No banco de dados dbBE2.mdb, crie uma nova tabela que é chamada tblArchive que contém os seguintes dois campos:
    • Campo1: número
    • Campo2: texto
  5. Criar um novo banco de dados em branco e denomine dbFrontEnd.mdb.
  6. No banco de dados dbFrontEnd.mdb, crie uma nova tabela de link para a tabela Tabela1 no banco de dados dbBE1.mdb.
  7. No banco de dados dbFrontEnd.mdb, crie outra nova tabela de link para a tabela tblArchive no banco de dados dbBE2.mdb.
  8. No banco de dados dbFrontEnd.mdb, crie uma nova com base em Table1 no modo de design de consulta de acréscimo.
    1. Adicione todos os campos da Tabela1 à grade de design.
    2. No menu consulta no modo de design da consulta, clique em consulta acréscimo .
    3. Na caixa Acrescentar A , digite tblArchive como o nome de tabela.
    4. Clique em Banco de dados atual e, em seguida, clique em OK .
    5. Na linha critérios para campo1, digite 3 .
    6. Execute a nova consulta. Você verá que o registro 3 é acrescentado ao tabela tblArchive.
  9. Exclua registro 3 da Tabela1.
  10. No banco de dados dbFrontEnd.mdb, crie uma nova consulta acréscimo que é baseada na tabela tblArchive no modo de design.
    1. Adicione todos os campos da tabela tblArchive à grade de design.
    2. No menu consulta no modo de design da consulta, clique em consulta acréscimo .
    3. Na caixa Acrescentar A , digite Tabela1 como o nome de tabela.
    4. Clique em Banco de dados atual e, em seguida, clique em OK .
    5. Na linha critérios para campo1, digite 3 .
    6. Execute a nova consulta. Você verá que registro 3 é acrescentado volta à tabela Tabela1.
  11. Abra Table1 e, em seguida, tentar adicionar um novo registro. Você receber a mensagem de erro mencionada na seção "Sintomas".
Referências
Para obter mais informações sobre o Microsoft Jet 4.0 Database Engine Service Pack 8, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
829558Informações sobre o Jet 4.0 Service Pack 8

Aviso: este artigo foi traduzido automaticamente

Eigenschappen

Artikel-id: 884185 - Laatst bijgewerkt: 06/25/2007 20:32:32 - Revisie: 6.2

Microsoft Office Access 2007, Microsoft Office Access 2003

  • kbmt kberrmsg kbcorrupt kbbug kbtshoot kbprb KB884185 KbMtpt
Feedback