CORRECÇÃO: #DELETED Erro ao inserir registros com chave primária CHAR

Traduções deste artigo Traduções deste artigo
ID do artigo: 264766 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você inserir um novo registro em uma tabela ODBC vinculada que possui um campo de texto de comprimento fixo (CHAR) como chave primária, #DELETED aparecerá em todos os campos no novo registro.

Observação Se você fechar e reabre a tabela vinculada, o registro recém-inserido será exibida e está inserido corretamente.

Causa

Muitos drivers ODBC adicionar espaços para (ou "preencher check-out") um campo CHAR quando o número de caracteres que são inseridos é menor que o comprimento máximo do campo. Microsoft Jet 4.0 incorretamente volta lê o valor inserido, preenchido e o compara com o valor original, unpadded. Como os dois valores são diferentes, Jet relatórios para o Microsoft Access que o registro recém-inserido não pode ser encontrado.

Resolução

Para resolver esse problema, instale o Jet 4.0 service pack mais recente. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
239114Como: Obter o Service Pack mais recente para o Microsoft Jet 4.0 Database Engine

Como Contornar

Use um campo de texto de comprimento variável (VARCHAR) como a chave primária para a tabela.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi corrigido no Jet 4.0 Service Pack 6 (SP6).

Mais Informações

Etapas para reproduzir o problema

É possível reproduzir esse problema vinculando a um banco de dados DB2, Oracle ou Microsoft SQL Server. O problema não parece ocorrer a menos que você tenha pelo menos 60 ou mais registros na tabela vinculada.

Se você examinar um rastreamento ODBC realizado durante a operação de inserção, você verá que o Jet insere e reselects o registro corretamente, e que nenhum erro ocorrer no rastreamento. O problema ocorre após Jet recupera o registro e tenta comparar o valor da chave reselected com o valor inserido pelo usuário.

Para reproduzir esse comportamento, execute as seguintes etapas:
  1. Execute o seguinte código Microsoft Visual Basic para gerar o teste de tabela e registros:
    Sub GenerateTestTable()
    Dim conn As Object
    Dim i As Long, sql as String
       Set conn = CreateObject("adodb.connection")
       ' Change connection string to point to your SQL Server if needed.
       conn.Open "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;"
       On Error Resume Next
       conn.Execute "drop table tmp_chartest"
       On Error GoTo 0
       sql = "create table tmp_chartest(f1 char(5) primary key, f2 char(10))"
       conn.Execute sql
        For i = 1 To 70
            sql = "insert into tmp_chartest (f1,f2) values ('"
            sql = sql & Format(i, "000") & "','XXXXXXXXXX')"
            conn.Execute sql
        Next i
        conn.Close
        Set conn = Nothing
    End Sub
    					
  2. Inicie o Microsoft Access 2000 e vincular a tabela de tmp_chartest foi criada na etapa anterior.
  3. Abra a tabela recém-vinculado e role para o último registro na tabela.
  4. Adicionar um novo registro com campo F1 = 071 e campo F2 = XXXXXXXXXX.
  5. Guia desativar o registro, e você deve ver #DELETED exibido em todos os campos.

Propriedades

ID do artigo: 264766 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 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 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: 264766

Submeter comentários

 

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