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


3 participantes

    [Resolvido]Funcionamento comando DoCmd.Close

    avatar
    sergio de paula
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 19/04/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  sergio de paula 30/6/2020, 23:09

    Queria saber se alguém pode me explicar uma coisa que, para mim, está sendo um mistério : alguns comandos ora funcionam ora me aparece uma mensagem : "esta ação não pode ser executada durante o processamento de um evento de formulário ou relatório" . um dos comandos é o docmd.close , se quero fechar um formulário. Qual é a lógica que permite ou não permite usar esse tipo de comando dentro de uma evento do fomulário ?
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  DamascenoJr. 1/7/2020, 00:20

    Não use apenas docmd.close
    Faça a indicação completa do objeto a ser fechado.

    Docmd.close acform, "nome do formulário"
    Ou
    Docmd.close acreport, "nome do relatório"

    Não indicar o nome do objeto completo pode confundir o código sobre qual objeto deve ser fechado. Não é possível fechar um objeto que está abrindo, por exemplo. Sem indicar o nome do objeto, pode está fazendo com que esse seu problema aconteça.
    avatar
    sergio de paula
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 19/04/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  sergio de paula 1/7/2020, 16:31

    Damasceno, eu não estou usando somente o docmd.close. O que me estranha é isso ! Mesmo usando os parâmetros do comando ele dá este erro. Principalmente se há um msgbox anterior ao comando, na mesma sub ! Há alguma lógica nisso que eu desconheço e gostaria de saber, para evitar esse tipo de erro !
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  DamascenoJr. 1/7/2020, 17:45

    Como exemplo, não é possível usar o docmd.close no evento "Ao abrir" de um formulário para fechar o mesmo formulário. Salvo engano, no evento "Ao carregar" também.

    São essas a situações de exemplo. Talvez seja o seu caso. Não sendo, o ideal é anexar o exemplo e dar o passo a passo de como se deparar com o erro. Assim seremos mais objetivos em apontar a causa do seu problema.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    digitaltec
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 153
    Registrado : 09/05/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  digitaltec 1/7/2020, 19:22

    Não sei se ajuda mais aqui estava com um problema parecido eu resolvi indo no vba na parte superior em depurar fui em compilar ele achou um erro eu fiz a correção e o mesmo parou de dar problema. Boa sorte
    avatar
    sergio de paula
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 19/04/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  sergio de paula 1/7/2020, 23:58

    Segue a rotina :
    Private Sub cliente_LostFocus()
    If DCount("cliente", "serviço", "cliente = '" & Me!cliente & "' and isnull(finalizaçao)") <> 0 Then
    Select Case BBmsgbox(1, 3, "Botões personalizados", "este cliente possui serviços não finalizados, escolha a opção ", 64, "ver os serviços", "mudar o cliente", "cancelar")
    Case "ver os serviços"
    DoCmd.OpenForm "histórico", , , "cliente = '" & Me!cliente & "'", , acDialog
    guardarec1 ("histórico")
    Case "mudar o cliente"
    DoCmd.RunCommand acCmdUndo
    Exit Sub
    Case "cancelar"
    DoCmd.RunCommand acCmdUndo
    DoCmd.Close acForm, "serviços"
    Exit Sub
    End Select
    End If
    Me!codigoserv = DMax("codigoserv", "serviço") + 1
    End Sub

    acontece quando seleciona a opção "cancelar"

    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  DamascenoJr. 2/7/2020, 02:04

    Troque seu código por esse

    Código:
    If DCount("cliente", "serviço", "cliente = '" & Me!cliente & "' and isnull(finalizaçao)") <> 0 Then
        Select Case BBmsgbox(1, 3, "Botões personalizados", "este cliente possui serviços não finalizados, escolha a opção ", 64, "ver os serviços", "mudar o cliente", "cancelar")
            Case "ver os serviços"
                DoCmd.OpenForm "histórico", , , "cliente = '" & Me!cliente & "'", , acDialog
                guardarec1 ("histórico")
            Case "mudar o cliente"
                DoCmd.RunCommand acCmdUndo
                Exit Sub
            Case "cancelar"
                DoCmd.RunCommand acCmdUndo
                Me.TimerInterval = 100
                Exit Sub
        End Select
    End If
    Me!codigoserv = DMax("codigoserv", "serviço") + 1

    E no evento "No Timer" do formulário, coloque
    Código:
    Me.TimerInterval = 0
    DoCmd.Close acForm, "serviços"


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    sergio de paula
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 19/04/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  sergio de paula 2/7/2020, 13:20

    Caro Damasceno,
    Num primeiro momento, funcionou. Vou tentar outras situações para ver se não tem outro problema, talvez tenha que definir o timerinterval = 0 no form load.
    Mas, você podia me explicar o porque essa solução corrige o problema ? Até para que eu possa perceber outros que aparecem/apareçam ?
    obrigado !!
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  DamascenoJr. 2/7/2020, 16:55

    Não é possível fechar o formulário enquanto um campo desse mesmo formulário está perdendo o foco. Se o formulário fechar, para onde o foco vai?

    O que o código aí faz é ativar um intervalo de 100 milésimos de segundo. É o tempo que o campo termina de processar o evento de perder o foco. Após esses 100 milésimos, o código do evento do cronômetro solicita o fechamento do formulário.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    sergio de paula
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 75
    Registrado : 19/04/2020

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  sergio de paula 2/7/2020, 18:26

    Agora eu entendi a lógica e porque alguns erros acontecem, pois uso muitos códigos no "lost Focus". Obrigado !!
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  DamascenoJr. 2/7/2020, 22:38

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    Conteúdo patrocinado


    [Resolvido]Funcionamento comando DoCmd.Close Empty Re: [Resolvido]Funcionamento comando DoCmd.Close

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 20:43