MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


4 participantes

    Cancelar salvamento de registro e fechamento de formulário

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Cancelar salvamento de registro e fechamento de formulário Empty Cancelar salvamento de registro e fechamento de formulário

    Mensagem  rgondim Qui 8 Nov - 2:46

    Tenho um formulário em que preciso utilizar uma função(abaixo) que cancela o salvamento do registro caso determinados campos não estejam preenchidos.

    Chamei esta função em Form_BeforeUpdate e funcionou.
    Código:
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If criticaCampos = False Then
            MsgBox "É obrigatório o preenchimento do campo indicado a seguir.", _
                    vbCritical, "Preenchimento Incompleto"
            Cancel = True '[color=red]Conseguiu para o salvamento[/color]
        End If
    End Sub

    Agora preciso que, ao tentar fechar o formulário, a mesma função seja usada para cancelar tanto o fechamento como o salvamento do registro. Ao fazer o procedimento acima em Form_Unload, consegui cancelar o fechamento do formulário, mas quando o evento Form_Unload é acionado, o registro é sendo salvo.

    Código:
    Private Sub Form_Unload(Cancel As Integer)
        If criticaCampos = False Then
            If MsgBox("Deseja fechar o formulário e cancelar o registro?", vbQuestion + vbYesNo, "Aviso de Férias") = vbYes Then
              Me.Undo
              DoCmd.Close
            Else
                Cancel = True '[color=red]Cancela o fechamento, mas não impede o salvamento[/color]
            End If
        End If
    End Sub

    Penso que o melhor aqui é interromper o comando Fechar no evento Form_BeforeUpdate, mas a opção Cancel=True não consegue fazer isso.

    :::Função:::
    Código:
    Private Function criticaCampos()
    'Identifica campos nulo com preenchimento obrigatório
        Dim ctl As Control
        criticaCampos = True
       
        For Each ctl In Me.Controls 'Para cada campo nulo com a marca(tag) igual a 1, exibie mensagem de erro.
            If ctl.Tag = 1 Then
                If IsNull(ctl) Then
                    ctl.SetFocus
                    strCampo = UCase(ctl.Controls(0).Caption)
                    criticaCampos = False
                    Exit Function
                End If
            End If
        Next
       
    End Function
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  Silvio Qui 8 Nov - 12:29

    Bom dia Rgondim.....


    Podemos tentar dessa forma...

    Private Sub Form_Unload(Cancel As Integer)
    If criticaCampos = False Then
    If MsgBox("Deseja fechar o formulário e cancelar o registro?", vbQuestion + vbYesNo, "Aviso de Férias") = vbYes Then
    Me.Undo
    DoCmd.Close acForm, "SeuFormulário", acSaveNo

    End If
    End If
    End Sub

    Teste.....

    Abraços.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  rgondim Qui 8 Nov - 14:34

    Eu tive uma situação nova: agora, quando o evento Form_Unload, o registro é cancelado (como se eu apertasse Esc).

    Eu gostaria de poder, ao clicar em fechar, o registro continuasse 'sujo'(dirty). Ao exibir a mensagem, eu tivesse a opção de escolher entre cancelar o fechamento e voltar ao formulário ou fechar e apagar as alterações
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  JPaulo Qui 8 Nov - 16:08

    Veja se serve, é só adaptar:

    Pressione o X do form para fechar e veja o resultado.


    Private Sub Form_Unload(Cancel As Integer)
    'By JPaulo ® Maximo Access
    Dim ctl As Control
    x = MsgBox("Deseja fechar o formulário e cancelar o registro ?", vbYesNo, "Fecho")
    Select Case x
    Case vbYes
    For Each ctl In Me.Controls
    If ctl.ControlType = acTextBox Then
    ctl.Value = ""
    End If
    Next ctl
    Case vbNo
    Cancel = True
    End Select
    End Sub


    Anexos
    Cancelar salvamento de registro e fechamento de formulário AttachmentValidaCamposNulos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (22 Kb) Baixado 102 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Cancelar salvamento de registro e fechamento de formulário Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Cancelar salvamento de registro e fechamento de formulário Folder_announce_new 102 Códigos VBA Gratuitos...
    Cancelar salvamento de registro e fechamento de formulário Folder_announce_new Instruções SQL como utilizar...
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  rgondim Dom 16 Dez - 18:59

    JPaulo,
    Testei e ocorreu erro em ctl.Value = "":
    "Não é possível atribuir valor ao controle."

    A solução do Silvio também não funcionou, porque ao descarregar o formulário, o registro EmSujo(Dirty) é salvo automaticamente:
    Me.Undo
    DoCmd.Close acForm, "SeuFormulário", acSaveNo

    Jerecardoso
    Jerecardoso
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 12/07/2013

    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  Jerecardoso Sáb 4 Abr - 17:11

    Tente Assim

    comigo deu certo


    ' ****((( Função para deletar os dados inclusos na tabela caso feche o formulário sem concluir as informações )))***



    If MsgBox("Deseja fechar o formulário e cancelar o registro?", vbQuestion + vbYesNo, "Aviso de Férias") = vbYes Then
    Me.Undo
    CurrentDb.Execute "DELETE * FROM a Tebetla Onte estão os dados WHERE [Seu compo ] =#" & Seu campo & "#"

    DoCmd.Close
    Else
    Cancel = True 'Cancela o fechamento, mas não impede o salvamento
    End If
    'End If


    .................................................................................
    affraid affraid É isso ai affraid affraid

    Conteúdo patrocinado


    Cancelar salvamento de registro e fechamento de formulário Empty Re: Cancelar salvamento de registro e fechamento de formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Qui 28 Mar - 14:27