Poderá receber uma mensagem de erro quando tentar inserir um novo registo numa tabela que contém um campo numeração automática no Access
Número original da BDC: 884185
Sintomas
Quando tenta inserir um novo registo numa tabela com um campo Numeração Automática , poderá receber a seguinte mensagem de erro:
As alterações pedidas à tabela não foram bem-sucedidas porque iriam criar valores duplicados no índice, na chave primária ou na relação. Altere os dados no campo ou campos que contêm dados duplicados, remova o índice ou redefina o índice para permitir entradas duplicadas e tente novamente.
Nota
A tabela pode não ter relações ou índices.
Causa
Este problema ocorre quando o campo Numeração automática foi propagado incorretamente.
Resolução
Existem vários métodos que podem resolver este problema.
Método 1: Executar Compactação e Reparação
Para compactar a base de dados, siga estes passos:
Inicie o Access.
Abra a base de dados do Access.
Nota
Se vir a caixa de diálogo Aviso de Segurança, clique em Abrir.
Clique no separador do friso Ferramentas da Base de Dados e, em seguida, clique em Compactar e Reparar Base de Dados no grupo Ferramentas.
Nota
As versões anteriores do Access podem ter a opção Compactar e Reparar a Base de Dados localizada noutro local. Veja a documentação da sua versão específica do Access para localizar esta opção.
Para repor manualmente a semente de campo Numeração Automática, utilize um dos seguintes métodos.
Método 2: Utilizar uma consulta de Definição de Dados
Abra a base de dados que tem a tabela (base de dados de back-end) no Access:
No separador Criar , clique em Estrutura da Consulta no grupo Consultas .
Na caixa de diálogo Mostrar Tabela , clique em Fechar.
No separador Estrutura , clique em Vista SQL no grupo Resultados .
Escreva o seguinte na janela Consulta1 :
ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
Nota
<TableName> é um marcador de posição para o nome da <tabela. AutoNumFieldName> é um marcador de posição para o nome do campo Numeração Automática . iMaxID é um marcador de posição para o valor máximo atual no campo mais 1.
No separador Estrutura , clique em Executar no grupo Resultados .
Método 3: Executar código Visual Basic for Applications
No separador Criar , clique na seta para baixo em Macro e, em seguida, clique em Módulo.
Cole o seguinte código no visual basic Revisor.
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 sqlFixID End Sub
Nota
O marcador <de posição AutonumberFieldName> representa o nome do campo Numeração Automática. O marcador <de posição TableName> representa o nome da tabela.
No menu Executar, clique em Executar Sub/Formulário de Utilizador.
Nota
Tem de fechar a tabela antes de utilizar qualquer um dos métodos. Não tem de guardar a consulta ou o módulo depois de utilizar com êxito qualquer um dos métodos
Passos para reproduzir o comportamento
Criar uma nova base de dados em branco
Crie uma nova tabela denominada Tabela1 que contenha os dois campos seguintes:
Campo1: Campo de Numeração Automática (Chave Primária) 2: Texto
Adicione os seguintes seis registos à Tabela1.
Campo1 Campo2 1 A 2 B 3 C 4 D 5 E 6 F Elimine o registo em que Field1 tem o valor 3.
No separador Criar , clique em Estrutura da Consulta no grupo Consultas .
Na caixa de diálogo Mostrar Tabela , clique em Fechar.
No separador Estrutura , clique em Vista SQL no grupo Resultados .
Escreva o seguinte na janela Consulta1 :
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
No separador Estrutura , clique em Executar no grupo Resultados .
Abra a Tabela1 e, em seguida, tente adicionar um novo registo. Recebe a mensagem de erro mencionada na secção "Sintomas".
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários