ACC2002: Mensagem de erro: operação sem suporte de transações

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: 295229
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Este artigo se aplica somente a um banco de dados do Microsoft Access (.mdb).

Sintomas
Se você definir o argumento Cancel como True no evento Form_Delete de um subformulário, o link para qualquer controle de subformulário relacionados é quebrado. Se você tentar mover para outro registro no subformulário, você receberá a seguinte mensagem de erro:
Operação sem suporte em transações.
Resolução
Para contornar esse comportamento, em vez de usar o evento Form_Delete para personalizar como os registros são excluídos, use o evento Form_BeforeDelConfirm. Para ver um exemplo de como fazer isso, use as seguintes etapas para resolver o problema descrito na seção "Passos para reproduzir o problema" neste artigo.
  1. Comentar todas as linhas de código no procedimento de evento Form_Delete ou exclua o procedimento de evento Form_Delete do módulo do formulário.
  2. Copie e cole o código a seguir no módulo do formulário:
    Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)'Message box to prompt for confirmation cancelling delete operationIf MsgBox("Delete current record ?", vbExclamation + vbOKCancel) = vbCancel Then Cancel = TrueEnd If'Enables Microsoft Access to delete records without prompting the user.Response = acDataErrContinueEnd Sub					
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
No Microsoft Access 97, o definindo o argumento Cancel igual a True no evento Form_Delete de um subformulário não quebrar o vínculo com qualquer controle de subformulário relacionados.

cuidado : se você seguir as etapas neste exemplo, você modificar o banco de dados de exemplo Northwind.mdb. Convém fazer o backup do arquivo Northwind.mdb e seguir essas etapas numa cópia do banco de dados.

Passos para reproduzir o problema

  1. Inicie o Access, abra o banco de dados de exemplo Northwind e em seguida, copiar e colar a tabela Pedidos em uma tabela denominada SubA e tabela Detalhes do pedido para uma tabela denominada SubB .
  2. Usando o AutoFormulário: Tabular assistente, criar um formulário baseado na tabela SubA, salve o formulário como SubA e fechá-lo.
  3. Usando o AutoFormulário: Tabular assistente, criar um formulário que é baseado na tabela SubB, salve o formulário como SubB e salvá-lo.
  4. Abra o formulário SubA no modo de design e clique em código no menu Exibir para abrir o Editor do Visual Basic.
  5. Digite as seguintes linhas no módulo do formulário se não estiverem já existe:
    Option Compare DatabaseOption Explicit					
  6. Copie e cole o código a seguir:
    Dim OldOptVal As IntegerPrivate Sub Form_Close()'Set Confirm Record Changes confirmation back to original stateSetOption "Confirm Record Changes", OldOptValEnd SubPrivate Sub Form_Current()' Assign to the control "OrderID" on the Main form the current OrderID on the subformMe.Parent!txtOrderID = Me!OrderIDEnd SubPrivate Sub Form_Delete(Cancel As Integer)'Message box to prompt for confirmation cancelling delete operationIf MsgBox("Delete current record ?", vbExclamation + vbOKCancel) = vbCancel ThenCancel = TrueEnd IfEnd SubPrivate Sub Form_Open(Cancel As Integer)'Get the current setting of Confirm Record ChangesOldOptVal = GetOption("Confirm Record Changes")'Set the Confirm Record Changes setting to TrueSetOption "Confirm Record Changes", TrueEnd Sub					
  7. Feche e salve o formulário.
  8. Criar um formulário em branco no modo de design e, em seguida, adicione um controle de caixa de texto não acoplada denominado txtOrderID.
  9. Com o Assistente de subformulário/sub-relatório desativado, criar dois controles de subformulário com as seguintes propriedades
    Name:               ctlSubA     ctlSubBSourceObject:       SubA        SubBLink Child Fields:  (unbound)   OrderIDLink Master Fields: (unbound)   txtOrderID						
  10. Feche e salve o formulário como principal e, em seguida, reabra o formulário no modo de formulário.
  11. Clique no primeiro registro no subformulário SubA, pressione DELETE e, em seguida, clique em Cancelar . Observe que o link para o subformulário SubB é interrompido neste momento
  12. No subformulário SubA, mova o seletor de navegação de registros para o próximo registro. Observe que você recebe a seguinte mensagem de erro:
    Operação sem suporte em transações
Sincronizar subformulários link subformulário pra

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 295229 - Última Revisão: 12/06/2015 01:54:37 - Revisão: 3.0

Microsoft Access 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kberrmsg kbpending KB295229 KbMtpt
Comentários