ID do artigo: 128809 - Última revisão: sexta-feira, 19 de janeiro de 2007 - Revisão: 4.1

Erros de "# excluído" com tabelas ODBC vinculadas

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando você recuperar, insere ou atualizar registros em uma tabela ODBC vinculada, cada campo em um registro contém a mensagem de erro "#Deleted". Ao recuperar, inserir ou atualizar registros usando código, você recebe a mensagem de erro "O registro é excluído."

Causa

O mecanismo de banco de dados Microsoft Jet destina-se ao redor de um modelo orientado a conjunto de chaves. Isso significa que dados são recuperados, inseridos e atualizados com base nos valores chaves (no caso de uma ODBC tabela vinculada, o índice exclusivo de uma tabela).

Após o Microsoft Access executa uma inserção ou uma atualização de uma tabela ODBC vinculada, ele usa um onde critérios para selecionar o registro novamente para verificar a inserção ou atualização. Local de critérios se baseia o índice exclusivo. Embora vários fatores podem causar selecione não retornar todos os registros, geralmente a causa é que o valor da chave que Microsoft Access tem armazenados em cache não é o mesmo que o real valor da chave na tabela ODBC. Outras possíveis causas são:
  • Tendo um disparador de atualização ou inserção na tabela, modificando o valor da chave.
  • Baseando o índice exclusivo em um valor flutuante.
  • Usando um campo de texto de comprimento fixo que pode ser preenchido no servidor com a quantidade correta de espaços.
  • Tendo uma tabela ODBC vinculada que contêm valores nulos em qualquer um dos campos que compõem o índice exclusivo.
Esses fatores não provocam a mensagem de erro "#Deleted" diretamente. Em vez disso, eles causar Microsoft Access ir para a próxima etapa manter os valores da chave, que é selecionar o registro novamente, dessa vez com os critérios com base em todos os outros campos no registro. Se essa etapa retorna mais de um registro, o Microsoft Access retorna a mensagem "#Deleted" porque ele não tem um valor de chave confiável para trabalhar com. Se você fecha e reabrir a tabela ou escolher mostrar todos os registros no menu registros, os erros "#Deleted" serão removidos.

Microsoft Access utiliza um processo semelhante para recuperar registros de uma tabela ODBC vinculada. Primeiro, ele recupera os valores de chave e, em seguida, o restante dos campos que correspondem aos valores de chaves. Se o Microsoft Access não é capaz de encontrar esse valor novamente quando ele tenta localizar o resto do Registro, ele assumirá que o registro é excluído.

Resolução

Estas são algumas estratégias que você pode usar para evitar esse comportamento:
  • Evite inserir registros que são exatamente os mesmos, exceto para o índice exclusivo.
  • Evite uma atualização que dispara atualizações de índice exclusivo e outro campo.
  • Não use um campo flutuar como um índice exclusivo ou como parte de um índice exclusivo devido aos problemas arredondamento inerentes deste tipo de dados.
  • Fazer todas as atualizações e inserções usando consultas passagem SQL para que você saiba exatamente o que é enviado para a fonte de dados ODBC.
  • Recupere registros com uma consulta passagem SQL. Um SQL consulta passagem não é atualizável e, portanto, não causará erros de "#Delete".
  • Evite armazenar valores nulos dentro de qualquer campo que compõem o índice exclusivo da tabela vinculada ODBC.

Mais Informações

Observação : no Microsoft Access 2.0, tabelas vinculadas foram chamadas tabelas anexadas.

Etapas para reproduzir o problema


  1. Abrir o exemplo banco de dados Northwind.mdb (ou NWIND.MDB. no Microsoft Access 2.0)
  2. Use as ferramentas Upsizing para fazer o upsizing da tabela Transportadoras.

    Observação: Esta tabela contém um campo AutoNumeração (ou campo de contador no Microsoft Access 2.0) que é traduzido no SQL Server, as ferramentas de Upsizing em um disparador que emula um contador.
  3. Abra a tabela Transportadoras vinculada e insira um novo registro. Verifique se o registro que você inserir tem os mesmos dados no campo nome da empresa como o registro anterior.
  4. Pressione a tecla TAB para mover para um novo registro. Observe que o erro "#Deleted" preenche o registro que você inseriu.
  5. Feche e reabra a tabela. Observe que o registro está correto.

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Palavras-chave: 
kbmt kberrmsg kbinterop kbprb KB128809 KbMtpt
Tradução automáticaTraduçã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: 128809  (http://support.microsoft.com/kb/128809/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.