Não é possível adicionar registros ou excluir registros com o método AddNew do ADO ou com o método Delete

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

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: 289675
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Este artigo aplica-se a um banco de dados do Microsoft Access (.mdb ou .accdb) e a um projeto Microsoft Access (.adp).

Para uma versão deste artigo do Microsoft Access 2000, consulte 225899.
Sintomas
Quando você estiver usando ActiveX Data Objects (ADO), se você usar AddNew ou método Delete do objeto Recordset e você abrir o conjunto de registros com um tipo de bloqueio não especificado, você pode receber uma das seguintes mensagens de erro:
Erro em tempo de execução '3251': objeto ou o provedor não é capaz de executar a operação solicitada.
- ou -
Erro em tempo de execução '3251':
Não há suporte para a operação solicitada pelo aplicativo pelo provedor.
- ou -
Erro em tempo de execução '3251':
Atual Recordset não oferece suporte à atualização. Isso pode ser uma limitação do provedor ou da locktype selecionado.
Causa
Por padrão, os conjuntos de registros ADO são abertos com um tipo de bloqueio de adLockReadOnly , que não permite adições e exclusões.
Resolução
Para permitir adições e exclusões, abra o conjunto de registros com um tipo de bloqueio de adLockOptimistic ou adLockPessimistic , como no exemplo de código a seguir:
Sub DelFirstRec()   Dim rs As ADODB.Recordset   Set rs = New ADODB.Recordset   rs.Open "Select * from TestTable", CurrentProject.Connection, _            adOpenKeyset, adLockOptimistic   rs.MoveFirst   rs.Delete   rs.CloseEnd Sub				
Observação : você pode usar este código de exemplo para resolver o comportamento na seção "Passos para reproduzir o problema mostrados" neste artigo.
Mais Informações

Etapas para reproduzir o problema

  1. Em um novo banco de dados do Access, crie a seguinte nova tabela e denomine TestTable:
       Table: TestTable   ----------------------------   Field Name: ID   Data Type: Autonumber   Indexed: Yes (No Duplicates)   Field Name: Name   Data Type: Text					
  2. Abra a nova tabela no modo folha de dados e digite os seguintes dados de teste:
       ID    Name   -----------------   1    Beverages   2    Condiments   3    Confections   4    Dairy   5    Grains   6    Meat   7    Produce   8    Seafood					
  3. Observação : O exemplo códigos este artigo utiliza Microsoft ActiveX Data Objects. Para que este código seja executado corretamente, você deve fazer referência a 2.x Microsoft ActiveX Data Objects Library (onde 2.x é 2.1 ou posterior.) Para fazer isso, clique em referências no menu Ferramentas no Editor do Visual Basic e veja que a caixa de seleção 2.x Microsoft ActiveX Data Objects Library está selecionada.

    Criar um módulo e digite a seguinte linha na seção Declaração caso ele não esteja lá:
    Option Explicit					
  4. Digite o seguinte procedimento:
     Sub DelFirstRec()   Dim rs As New ADODB.Recordset   rs.Open "Select * from TestTable", CurrentProject.Connection, adOpenKeyset   rs.MoveFirst   rs.Delete   rs.CloseEnd Sub					
  5. Para testar essa função, digite a seguinte linha na janela Verificação imediata e, em seguida, pressione ENTER:
    DelFirstRec
    Observe que você recebe a mensagem de erro mencionada na seção "Sintomas" deste artigo. Além disso, quando você verificar a tabela, você vê que não há registros foram excluídos.
pra prb pode t não é possível executar erro em tempo de 3251 ACC2002 ACC2007

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 289675 - Última Revisão: 03/26/2007 22:54:10 - Revisão: 5.1

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbmt kbprogramming kbperformance kbvba kberrmsg kbprb KB289675 KbMtpt
Comentários