Artigo: 223213 - Última revisão: quinta-feira, 23 de Junho de 2005 - Revisão: 3.0

ACC2000: Erro com CurrentProject.Connection transacções

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.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se a uma base de dados do Microsoft Access (.mdb) e a um projecto do Microsoft Access (.adp).

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Se utilizar os métodos CommitTrans ou RollbackTrans directamente com o objecto CurrentProject.Connection , poderá receber um dos seguintes erros:
Tentou confirmação ou anulação uma transação sem primeiro a iniciar uma transacção.
- ou -
Nenhuma transacção está activa.

Causa

Sempre que o objecto CurrentProject.Connection é utilizado, tem um ponteiro diferente à ligação. Na realidade, a instância ou apontador para esse objecto é temporário. Isto é porque não ver nenhum erro no CurrentProject.Connection.BeginTrans , mas recebe um erro quando tenta consolidar ou anular a transacção.

Resolução

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. atenção : Se seguir os passos neste exemplo, modificará a base de dados de exemplo Adamastor.mdb. Convém cópia de segurança do ficheiro de base de dados Adamastor.mdb e siga estes passos numa cópia da base de dados.

Definir uma variável de objecto uma vez para CurrentProject.Connection e utilizado para a transacção de processamento, tal como no exemplo seguinte. Aqui, "c" é o objecto de ligação utilizado em transacções de:

Nota : O código de exemplo deste artigo utiliza Microsoft ActiveX Data Objects. Para que este código seja executado correctamente, tem de referenciar o Microsoft ActiveX Data Objects 2.x biblioteca (onde 2.x é 2.1 ou posterior.) Para o fazer, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se que a caixa de verificação Microsoft ActiveX Data Objects 2.x biblioteca está seleccionada.

  1. Abra a base de dados exemplo Adamastor.mdb.
  2. Na janelas da base de dados, clique em módulos em objectos e, em seguida, clique em Novo .
  3. Escreva o seguinte código no novo módulo:
    Sub tstConnectionObj()
    
       Dim c As ADODB.Connection
       Dim rs As ADODB.Recordset
    
       Set c = CurrentProject.Connection
       Set rs = New ADODB.Recordset
    
       rs.Open "Categories", c, adOpenDynamic, adLockOptimistic
    
       c.BeginTrans
       rs.Fields(1) = "Drinks"
    
       rs.Update
       MsgBox "Updated field to " & rs.Fields(1) & "."
    
       c.RollbackTrans
       rs.Requery
       MsgBox "Rolled back field to " & rs.Fields(1) & "."
    
    End Sub
    					
  4. Na janela Immediate, escreva o seguinte e prima ENTER:
    tstConnectionObj
    						
    nota será apresentada a seguinte mensagem:
    Campo actualizado para Bebidas.
  5. Clique em OK na mensagem. Tenha em atenção que será apresentada a seguinte mensagem:
    Reposta campo Bebidas.
  6. Clique em OK na mensagem.

Mais Informação

Passos para reproduzir o comportamento

  1. Abra a base de dados exemplo Adamastor.mdb.
  2. Na janelas da base de dados, clique em módulos em objectos e, em seguida, clique em Novo .
  3. Escreva o seguinte código no novo módulo:
    Sub tstCurrentProj()
    
       Dim rs As ADODB.Recordset
    
       Set rs = New ADODB.Recordset
    
       rs.Open "Categories", CurrentProject.Connection, adOpenDynamic, _
         adLockOptimistic
    
       CurrentProject.Connection.BeginTrans
       rs.Fields(1) = "Drinks"
       rs.Update
       MsgBox "Updated field to " & rs.Fields(1) & "."
    
       CurrentProject.Connection.RollbackTrans
       MsgBox "Rolled back field to " & rs.Fields(1) & ".
    
    End Sub
    					
  4. Na janela Immediate, escreva o seguinte e prima ENTER:
    tstCurrentProj
    						
    nota será apresentada a seguinte mensagem:
    Campo actualizado para Bebidas.
  5. Clique em OK na mensagem.

    Tenha em atenção que ver a primeira mensagem de erro mencionada na secção "Sintomas" deste artigo.

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbprb KB223213 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 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.
Clique aqui para ver a versão em Inglês deste artigo: 223213  (http://support.microsoft.com/kb/223213/en-us/ )