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

ACC2000: Como controlo de formulário de ligação transacções em bases de dados do Access

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 apenas a uma base de dados do Microsoft Access (.mdb).

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo mostra como utilizar o Data Access Objects (DAO) para transacções de controlo de um formulário baseado numa tabela (um formulário dependente) numa base de dados do Microsoft Access (Jet).

Mais Informação

Normalmente, um programador tem de ser possível permitir que os utilizadores de uma consolidação de aplicação de base de dados todas as ou nenhuma das respectivas alterações de dados num formulário. Em versões do Access anteriores à versão 2000, não foi de incorporar alterações de dados em formulários dependentes em transacções. Este era uma vez que todas as transacções em formulários dependentes foram processadas numa área de separado trabalho, acessível apenas para o Microsoft Access.

No Microsoft Access 2000, no entanto, pode utilizar uma combinação de objectos de acesso a dados (DAO) e as novas, propriedade de conjunto de registos para fornecer esta capacidade de formulário. O exemplo neste artigo pressupõe que o utilizador pretende terá de confirmar todas as alterações efectuadas aos dados do formulário quando o utilizador fecha o formulário. Nessa altura, o utilizador pode consolidar ou todas as alterações ou nenhuma das alterações.

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. Nota : O código de exemplo deste artigo utiliza Microsoft Data Access Objects. Para que este código seja executado correctamente, tem de referenciar a biblioteca Microsoft DAO 3.6 Object Library. Para o fazer, clique em References no menu Ferramentas no Editor do Visual Basic e certifique-se de que está seleccionada a caixa de verificação Microsoft DAO 3.6 Object Library .

Nota : Este exemplo foi concebido para funcionar com formulários principais único. Não foi concebido para trabalhar com subformulários ligados.

Controlo de transacções em formulários de ligação

  1. Abra a base de dados exemplo Adamastor.mdb.
  2. Crie um novo formulário baseado na tabela clientes.
  3. Adicione todos os campos à secção de detalhes do formulário.
  4. No menu Ver , clique em código para visualizar o módulo do formulário e, em seguida, adicione o seguinte código ao módulo:
    Option Compare Database
    Option Explicit
    
    Private boolFrmDirty As Boolean
    Private boolFrmSaved As Boolean
    
    Private Sub Form_AfterDelConfirm(Status As Integer)
        If Me.Saved = False Then Me.Saved = (Status = acDeleteOK)
    End Sub
    
    Private Sub Form_AfterUpdate()
        Me.Saved = True
    End Sub
    
    Private Sub Form_Delete(Cancel As Integer)
        If Me.Dirtied = False Then DBEngine.BeginTrans
        Me.Dirtied = True
    End Sub
    
    Private Sub Form_Dirty(Cancel As Integer)
        If Me.Dirtied = False Then DBEngine.BeginTrans
        Me.Dirtied = True
    End Sub
    
    Private Sub Form_Open(Cancel As Integer)
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset("SELECT * FROM Customers", dbOpenDynaset)
        Set Me.Recordset = rs
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        Dim msg As Integer
        If Me.Saved Then
            msg = MsgBox("Do you want to commit all changes?", vbYesNoCancel)
            Select Case msg
                Case vbYes
                    DBEngine.CommitTrans
                Case vbNo
                    DBEngine.Rollback
                Case vbCancel
                    Cancel = True
            End Select
        Else
            If Me.Dirtied Then DBEngine.Rollback
        End If
    End Sub
    
    Public Property Get Dirtied() As Boolean
        Dirtied = boolFrmDirty
    End Property
    
    Public Property Let Dirtied(boolFrmDirtyIn As Boolean)
        boolFrmDirty = boolFrmDirtyIn
    End Property
    
    Public Property Get Saved() As Boolean
        Saved = boolFrmSaved
    End Property
    
    Public Property Let Saved(boolFrmSavedIn As Boolean)
        boolFrmSaved = boolFrmSavedIn
    End Property
    					
  5. No menu Debug , clique em Compile Adamastor .
  6. No menu ficheiro , clique em Guardar base de dados Adamastor .
  7. Quando lhe for pedido, guarde o formulário como frmCustomers.
  8. Abra o formulário frmCustomers na vista de formulário. Tenha em atenção que o formulário é preenchido com dados.
  9. Efectue algumas alterações ao editar um registo existente, inserindo alguns novos registos e eliminando alguns registos.
  10. Feche o formulário. Tenha em atenção que solicitado se pretende confirmar todas as alterações.
  11. Clique em ' não '.
  12. Abra o formulário na vista de formulário. Note que nenhuma das alterações que efectuou no passo 9 foram guardadas na base de dados.
  13. Repita os passos 9 e 10.
  14. Quando for pedido para confirmar todas as alterações, clique em Sim .
  15. Abra o formulário na vista de formulário. Tenha em atenção que todas as alterações efectuadas foram guardadas na base de dados.

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto KB248011 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: 248011  (http://support.microsoft.com/kb/248011/en-us/ )