ACC2000: Nova linha na tabela de ligação SQL Server desaparece ou é apresentada como um duplicado do último registo

Traduções de Artigos Traduções de Artigos
Artigo: 251289 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Moderado: Requer básica macros, codificação e interoperabilidade competências.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando adicionar um novo registo para uma tabela ligada do Microsoft SQL Server e, em seguida, move para um registo diferente, poderá detectar um dos seguintes sintomas:
Quando prime a tecla TAB para se deslocar para o novo registo seguinte depois de introduzir qualquer parte de um novo registo numa tabela, o registo que introduziu disappears.When escrever um novo registo completo numa tabela e, em seguida, move para um registo existente, o registo que escreveu disappears.When escrever apenas uma parte de um novo registo numa tabela e mova desactivar esse registo para um registo existente, o novo registo desaparece e o último registo na tabela parece estar duplicated.When escreva qualquer parte de um registo num formulário e, em seguida, deixe o registo, as informações introduzidas desaparece.
importante : não não realmente perdidos dados. Não tente adicionar novamente o registo; existe. Não tente eliminar o registo duplicado aparente. Eliminando-o, eliminar o registo original, o que parece ser duplicados, não o registo que acabou adicionado.

Causa

Se a tabela de SQL Server tem uma coluna de identidade, quando tenta adicionar um registo, em vez disso, consulte o que parece ser um duplicado do registo anterior. O novo registo não apresenta os dados correctos até actualizar o conjunto de registos. Este comportamento está relacionado com a forma como o Microsoft Access repete a consulta a base de dados do SQL Server.

Resolução

Para resolver este problema, obtenha a actualização do Microsoft Jet 4.0 service pack mais recente. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
239114Como: Obter o Service Pack mais recente para o motor de base de dados Microsoft Jet 4.0
Para contornar este problema, utilize um dos três métodos seguintes.

Utilizar um projecto do Access

Pode utilizar um projecto do Access em vez de uma base de dados do Access. Utilizando um projecto do Access, não é necessário ter ligado tabelas para ligar a uma base de dados do SQL Server.

Para obter informações adicionais sobre como converter a base de dados do Access para um projecto do Access, clique os números de artigo existente abaixo para visualizar os artigos na base de dados de conhecimento da Microsoft:
241743ACC2000: "Ferramentas de conversão do Access 2000" técnica disponível no Centro de transferências
250616ACC2000: Como utilizar DTS para exportar dados a partir de uma base de dados do Microsoft Access para uma base de dados do SQL Server

Utilizar formulários na base de dados do Access

Se visualizar este comportamento num formulário, utilize o Microsoft Visual Basic para código de aplicações para os eventos AntesDeInserir e DepoisDeInserir para repetir a consulta automaticamente os dados e mover o formulário para o registo recentemente. Com o código de exemplo abaixo, pode adicionar aos eventos para actualizar automaticamente o registo no formulário.

Nota : com este método poderá notar que tem de mover para fora um novo registo duas vezes. Isto é, quando adiciona um novo registo e, em seguida, prima a tecla TAB ou dos botões navegação em registos para adicionar outro novo registo ou mover para o registo anterior, tem de premir o botão de navegação em registos uma segunda vez para ir para o registo apropriado. Isto não afecta fechar o formulário.
Option Compare Database
Option Explicit

Dim mfRequery As Boolean

Private Sub Form_AfterInsert()

    If mfRequery = True Then
        ' If the variable indicates a Requery
        ' is needed, Requery the form.
        Me.Requery
        ' Move back to the record that was just added
        DoCmd.GoToRecord acDataForm, Me.Name, acLast
        mfRequery = False
    End If

End Sub

Private Sub Form_BeforeInsert(Cancel As Integer)

    If Me.NewRecord = True Then
        ' If this is a new record, set a variable
        ' to indicate the need to Requery.
        mfRequery = True
    End If
    
End Sub
				

Utilizar tabelas numa MDB

Se vir este comportamento numa tabela, pode manualmente estância da tabela ou fechar e reabrir a tabela.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.   Este problema foi corrigido no Microsoft Jet 4.0 service pack mais recente.

Mais Informação

Passos para reproduzir o comportamento

  1. Abra a base de dados exemplo Adamastor.mdb.
  2. Exporte a tabela Encomendas numa base de dados do SQL Server existente. O nome OrdersTest .
  3. Crie uma nova base de dados do Access.
  4. Na nova base de dados, cria uma nova tabela ligada à tabela OrdersTest exportado para o SQL Server.
  5. Depois de ligar a ele, abra a tabela.
  6. Desloque-se para baixo para o último registo.
  7. Na linha de registo, escreva um novo registo.
  8. Depois de escrever todos os dados, prima a tecla de seta para cima para mover o cursor para fora do novo registo.
  9. Verá o novo registo já não estiver visível, mas o último registo aparece duas vezes.
  10. No menu registos , faça clique sobre Nova consulta . Repara que o duplicado desapareceu.

Propriedades

Artigo: 251289 - Última revisão: 4 de fevereiro de 2014 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbpending kbprb KB251289 KbMtpt
Tradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 251289

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com