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

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.

264766
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Quando insere um novo registo numa tabela ODBC ligada com um campo de texto de comprimento fixo (CHAR) como chave primária, #DELETED aparece no todos os campos no registo de novo.

Nota Se, em seguida, fechar e reabrir a tabela ligada, o registo recém-inserido aparece e está correctamente inserido.
Causa
Muitos controladores ODBC adicionar espaços para (ou "preencher") um campo CHAR quando o número de caracteres que são inseridos é inferior ao comprimento máximo do campo. Microsoft Jet 4.0 incorrectamente novamente lê o valor inserido, preenchido e compara-o valor original, unpadded. Uma vez que os dois valores são diferentes, Jet relatórios para o Microsoft Access que não é possível encontrar o registo recém-inserido.
Resolução
Para resolver este problema, instale o 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
Como contornar
Utilize um campo texto de comprimento variável (VARCHAR) como chave primária da 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 Jet 4.0 Service Pack 6 (SP6).
Mais Informação

Passos para reproduzir o comportamento

Pode reproduzir este problema ligando a uma base de dados DB2, Oracle ou o Microsoft SQL Server. O problema não parece ocorrer a menos que tenha pelo menos 60 ou mais registos na tabela ligada.

Se examinar um rastreio ODBC efectuado durante a operação de inserção, verá que insere e reselects correctamente o registo Jet e que não erros ocorrem no rastreio. O problema ocorre depois de Jet obtém o registo e tenta comparar o valor da chave reselected com o valor introduzido pelo utilizador.

Para reproduzir este comportamento, execute os seguintes passos:
  1. Execute o seguinte código de Microsoft Visual Basic para gerar a tabela de teste e registos:
    Sub GenerateTestTable()Dim conn As ObjectDim 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 = NothingEnd Sub					
  2. Inicie o Microsoft Access 2000 e ligue à tabela tmp_chartest criado no passo anterior.
  3. Abra a tabela ligada recentemente e desloque-se para o último registo na tabela.
  4. Adicionar um novo registo com o campo F1 = 071 e campo F2 = XXXXXXXXXX.
  5. Separador desactivar o registo, e deverá ver #DELETED apresentados em todos os campos.
eliminado

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 264766 - Última Revisão: 02/24/2014 05:53:15 - Revisão: 3.1

  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtpt
Esta informação foi útil?