O Access não reconhece a Coluna de Identidade numa tabela do SQL Server ligada

Última Atualização: 23 de janeiro de 2020

PROBLEMA

Ao criar uma ligação para uma tabela no SQL Server que tenha uma Coluna de Identidade, o Access irá normalmente identificar essa coluna como uma coluna de Numeração Automática.

Mostrar que a Coluna de Identidade é identificada como um campo de Numeração Automática.

Nas compilações do Canal Atual (16.0.12325.*) da Versão 1912 do Office 365 e Office 2016/2019, as Colunas de Identidade não estão identificadas corretamente e, em vez disso, serão reconhecidas como um Número.

A Coluna de Identidade não é identificada corretamente como Numeração Automática

Isto irá acontecer ao criar novas ligações através da interface de utilizador ou de código, mas apenas para novas ligações.  As ligações existentes não serão afetadas, a menos que a ligação seja Atualizada.

O Access utiliza a identificação adequada de uma Coluna de Identidade para várias finalidades, pelo que isto poderá causar impacto nas aplicações de várias formas.

Por exemplo, uma Coluna de Identidade geralmente é utilizada para identificar um registo adicionado recentemente.  Quando a Coluna de Identidade não é utilizada, o Access poderá não conseguir localizar corretamente a linha recém-adicionada, o que fará com que os campos nessa linha sejam apresentados como #Eliminado.

Linha que mostra os campos com o texto Eliminado

Poderá detetar problemas semelhantes ao utilizar a propriedade RecordSet.LastModified para obter os valores para o último registo adicionado. O seguinte código:

Set rst = CurrentDb().OpenRecordset("tblWithIdentityColumn")

rst.AddNew
rst!CompanyName = "Contoso"
rst.Update

rst.Bookmark = rst.LastModified
MsgBox rst!CompanyName

Poderá resultar no erro 3167:

Erro a indicar que o registo foi eliminado.

Em ambos os casos, o registo será adicionado com êxito, mas o Access não conseguirá encontrá-lo com êxito.

Normalmente, o Access também ignora as tentativas de atualizar a Coluna de Identidade diretamente. No entanto, nestes compilações, permite a tentativa, mas falha e gera uma mensagem de erro:

[SQL Server] Não é possível inserir valor explícito para a coluna de identidade na tabela "tblOrders" quando IDENTITY_INSERT estiver definido como OFF. (#544)

ESTADO: CORRIGIDO

A correção para este problema está agora disponível para a Versão 1912.  Pode ser necessário forçar explicitamente uma atualização para receber a correção.  O número da compilação corrigida deverá ser o 12325.20344.

Se for utilizador do Insiders Slow (Versão 2001) ou do Insiders Fast (Versão 2002). A correção ainda não foi implementada nestes canais, pelo que poderá querer mudar-se para o Canal Atual.

Nota: Após mudar de versão, tem de atualizar as ligações afetadas para garantir que as mesmas funcionam de forma correta novamente.

Ícone Especialistas (cérebro, roda dentada)

Pergunte aos peritos

Fale com peritos, debata as novidades mais recentes, atualizações e práticas recomendadas do Excel e leia o nosso blogue.

Microsoft Tech Community (Comunidade Tecnológica Microsoft)

Ícone Comunidade

Obtenha ajuda na comunidade

Faça uma pergunta e encontre soluções com a ajuda dos Agentes de Suporte, MVPs, Engenheiros e outros utilizadores do Excel.

Fórum do Office no Answers

Ícone de pedido de funcionalidade (lâmpada, ideia)

Sugira uma nova funcionalidade

Adoramos ler as suas sugestões e o seu feedback! Partilhe as suas ideias. Estamos atentos ao seu feedback.

UserVoice do Office

Consulte Também

Correções ou soluções para problemas recentes no Access

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×