MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Fechar formulário sem salvar alterações

    Compartilhe

    andre.lr
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 17/10/2011

    Fechar formulário sem salvar alterações

    Mensagem  andre.lr em Seg 28 Nov 2011, 12:36

    Amigos, estou com uma dificuldade, no meu formulário simples "RG LA 23" tenho dois botões para salvar!

    Botão 1: Salva e vai para um novo registro!
    Private Sub Comando140_Click()

    MsgBox "O Registro foi Salvo com Sucesso", vbInformation, "Registro Salvo"
    DoCmd.Save acForm, "RG LA 23 SAP - Formulário"
    Me.Refresh
    DoCmd.GoToRecord , , acNewRec
    Exit Sub
    End Sub

    Botão 2: Salva e fecha formulário!
    Private Sub Comando140_Click()

    MsgBox "O Registro foi Salvo com Sucesso", vbInformation, "Registro Salvo"
    DoCmd.Save acForm, "RG LA 23 SAP - Formulário"
    DoCmd.Close acForm, "RG LA 23 SAP - Formulário"
    Exit Sub
    End Sub


    Só que agora reparei, que ao fechar o formulário mesmo sem eu ter clicado em nenhum desses botões ele salva as alterações dos campos automáticamente Neutral
    gostaria que não acontecesse isso, então tentei utilizar uma macro desfazer registro no evento ao fechar, ela funcionou, quando fecha o formulário não salva as alterações, só que também ela está cancelando os meus dois botões de salvar,,, você clica e salva mas quando fecha o formulário e abre denovo para verificar, as alterações não estão mais salvas!

    Qual seria a solulção amigos!???
    também tentei colocar em código o comando desfazer registro e deu a mesma coisa!

    Private Sub Form_Close()
    On Error GoTo Form_Close_Err
    DoCmd.RunCommand acCmdUndo
    Form_Close_Exit:
    Exit Sub
    Form_Close_Err:
    MsgBox Error$
    Resume Form_Close_Exit
    End Sub


    Obrigado pela atenção qualquer dúvida sobre a questão eu esclareço!

    Convidad
    Convidado

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  Convidad em Seg 28 Nov 2011, 13:22

    Talvez fosse mais simples você apenas colocar um código no evento Current do form.

    Se houve alteração no registro (If Form_Dirty = True) exibe uma MsgBox Sim/Não perguntando se deseja salvar.

    Se for Sim - DoCmd.RunCommand acCmdSaveRecord
    Se for Não - Form.Undo

    Isso se seu form não estiver exibindo os botões de navegação.

    andre.lr
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 17/10/2011

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  andre.lr em Seg 28 Nov 2011, 14:01

    na verdade não é bem isto que estava pensando amigo! mas obrigado!

    gostaria somente que ao fechar ele não salve alteração nenhuma.... salve apenas com os meus 2 botões!
    só para esclarecer esses botões aparecem apenas na tela na impressão não!

    Convidad
    Convidado

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  Convidad em Seg 28 Nov 2011, 14:19

    Seu formulário está exibindo os botões de navegação?
    Com eles exibidos, o Access salva automaticamente. Ao menos é assim no 2003.
    A não ser que você intercepte.

    andre.lr
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 17/10/2011

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  andre.lr em Seg 28 Nov 2011, 16:02

    Não! eu sempre tiro os botões de navegação... estou usando o 2010... está sem os botões de navegação e mesmo assim continua salvando qualquer alteração nos campos automáticamente ao fechar... queria mto inibir isso!

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  JPaulo em Seg 28 Nov 2011, 16:14

    Olha eu aqui.

    Teste assim, mesmo fechando o form no botão de defeito X;

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim x As Integer
    If Me.Dirty Then
    x = MsgBox("Deseja salvar todas as alterações ?", vbYesNo)
    If x = vbNo Then
    Me.Undo
    End If
    End If
    End Sub






    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    andre.lr
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 17/10/2011

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  andre.lr em Seg 28 Nov 2011, 18:05

    Então amigos esse comando funciona, mas não da forma que eu busco... a menssagem aparece também na hora que utilizo meus botões de salvar , pois, o primeiro botão salva e vai até o novo registro

    Private Sub Comando140_Click()
    MsgBox "O Registro foi Salvo com Sucesso", vbInformation, "Registro Salvo"
    DoCmd.Save acForm, "RG LA 23 SAP - Formulário"
    DoCmd.GoToRecord , , acNewRec
    Exit Sub
    End Sub


    e o segundo salva e fecha simplesmente

    Private Sub Comando134_Click()
    MsgBox "O Registro foi Salvo com Sucesso", vbInformation, "Registro Salvo"
    DoCmd.Save acForm, "RG LA 23 SAP - Formulário"
    DoCmd.Close acForm, "RG LA 23 SAP - Formulário"
    Exit Sub
    End Sub


    e o que ocorre é que além da menssagem que os botões já tem programada,,, a menssagem do comando de vocês também acaba aparecendo não sei porque.... com a pergunta e tudo Deseja salvar todas as alterações ? sim não

    e não queria que ficasse assim...

    mas td bem, consegui resolver de uma forma alternativa mas que me atende...removi o botão fechar X e a a caixa de controle e coloquei um botão criado por mim que ao clicar nele realiza o comando desfazer e fechar formulário.... e pronto! não afeta os outros botões que tenho para salvar o registro e também fecha o formulário sem salvar nada!! =]

    Bom foi uma solução alternativa mas se alguém tiver ai um comando que funcione como eu tava pensando obrigado!
    por enquanto está resolvido!
    obrigado pela ajuda amigos!

    joanammc
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 88
    Registrado : 30/12/2012

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  joanammc em Qui 07 Mar 2013, 09:42

    Bom dia amigos. Tenho uma duvida parcida e não estou a conseguir resolver. Já testei vários codigo que encontrei noutros topicos do forum e nada.

    Tenho um fomulario com dois subforms. Quero que grave toda a informação o quando carrego no botão gravar. se carregar no sair dá mensagem se pretendo gravar ou não.

    Para o botão gravar usei:

    Private Sub Comando16_Click()
    Dim msg
    DoCmd.RunCommand acCmdSaveRecord
    msg = MsgBox("Registro salvo com Sucesso!", vbExclamation + vbOKOnly + vbDefaultButton2, "AVISO")
    End Sub

    O que tenho de fazer para nao gravar antes de eu carregar neste botão?

    No botão de sair já testei vários codigo mas aparece-me sempre que mudo de subform em vez de aparecer só quando fecho.

    Agredeço a ajuda

    carloshmfernandes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 13/08/2013

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  carloshmfernandes em Dom 18 Ago 2013, 16:01

    Não sei se resolveu o seu problema, vejo que isso é um problema quando estamos usando formulários com os controles acoplados, isso ajuda em muito eliminando a programação via código para buscar os dados, mas temos essa questão de atualização na mesma hora que digitamos.

    Crie um botão fechar e nele coloque uma macro ou até mesmo código Vba

    a macro ficou assim
    Condição                       Ação                      Argumentos
    [Formulário].[Sujo]        ExecutarComando       Desfazer
                                    Fechar                      aviso

    Ele desfaz o que foi editado e sai.
    Agora usando macro não sei como posso fazer para criar o botão Sim ou Não e cancelar o fechamento do form.

    Exportei a macro para o Vba e peguei o código gerado. acho que deu certo.
    Private Sub BtnFechar_Click()
    On Error GoTo BtnFechar_Click_Err

    With CodeContextObject
    If MsgBox("Deseja sair?", vbInformation + vbYesNo, "Aviso") = vbYes Then
    If (.Form.Dirty) Then
    DoCmd.RunCommand acCmdUndo
    End If
    DoCmd.Close , ""
    End If
    End With


    BtnFechar_Click_Exit:
    Exit Sub

    BtnFechar_Click_Err:
    MsgBox Error$
    Resume BtnFechar_Click_Exit
    End Sub

    carloshmfernandes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 13/08/2013

    Re: [Resolvido]Fechar formulário sem salvar alterações

    Mensagem  carloshmfernandes em Dom 18 Ago 2013, 18:49

    Melhor assim, ai é só chamar ele em cada botão de Sair ou Fechar

    Criar um módulo ou dentro de algum módulo

    Código:
    Function Desfazer_Sair(Form As Form)
    On Error GoTo Desfazer_Sair_Err

        With CodeContextObject
        If MsgBox("Deseja sair?", vbInformation + vbYesNo, "Aviso") = vbYes Then
            If (.Form.Dirty) Then
                DoCmd.RunCommand acCmdUndo
            End If
            DoCmd.Close , ""
        End If
        End With
    Desfazer_Sair_Exit:
        Exit Function

    Desfazer_Sair_Err:
    '    MsgBox Error$
        Resume Desfazer_Sair_Exit
    End Function

    Depois só chamar assim:

    Código:
    Private Sub BtnFechar_Click()
    Call Desfazer_Sair(Me)
    End Sub

    Oliveira89
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 93
    Registrado : 07/09/2016

    Funcional e objectivo

    Mensagem  Oliveira89 em Qua 28 Set 2016, 10:00

    Bom dia amigos

    Usei o seguinte código e funcionou direitinho Smile

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim x As Integer
    If Me.Dirty Then
    x = MsgBox("Deseja salvar todas as alterações ?", vbYesNo)
    If x = vbNo Then
    Me.Undo
    End If
    End If
    End Sub

    Obrigado

      Data/hora atual: Qua 07 Dez 2016, 08:39