MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Tempo ocioso fechar forms

    Compartilhe

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Tempo ocioso fechar forms

    Mensagem  Vanderlei em 6/9/2018, 18:35

    Olá

    Na pesquisa aqui no forum consegui encontrar este código abaixo que funciona perfeito, mas eu gostaria que fechasse todos os formulários abertos e retornasse ao frmLogin


    Fecha somente o formulário em questão
    Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.lblTempo.Caption = "00:00:00"
    End Sub


    Private Sub Form_Timer()
    'By JPaulo ®️ Maximo Access
    Static strHora As Integer
    Static strMinutos As Integer
    Static strSegundos As Integer

           If Trim(lblTempo.Caption) = "00:00:00" Then
               strHora = 0
               strMinutos = 0
               strSegundos = 0
           End If

       strSegundos = strSegundos + 1
       
           If strSegundos = 60 Then
               strSegundos = 0
               strMinutos = strMinutos + 1
           If strMinutos = 60 Then
               strMinutos = 0
               strHora = strHora + 1
           If strHora = 24 Then
           strHora = 0
          End If
        End If
      End If

       lblTempo.Caption = Format(strHora, "00") & ":" & _
       Format(strMinutos, "00") & ":" & _
       Format(strSegundos, "00")
    'tempo de inatividade do banco para encerramento, aqui o exemplo são de 1 minuto
    If lblTempo.Caption = "00:01:00" Then
    'Dim Msg As String
     ' Msg = "Sem usuário ativo detectado," & vbCrLf & "Tempo expirado"
     ' MsgBox Msg, vbInformation
     DoCmd.Close
        DoCmd.OpenForm "formulário1"
      'DoCmd.Quit acQuitSaveAll
    End If
    End Sub
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 6/9/2018, 20:11

    Código:
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentProject
    For Each obj In dbs.AllForms
      If obj.IsLoaded = True Then
        DoCmd.Close acForm, obj.Name, acSaveYes
      End If
    Next obj
    DoCmd.OpenForm "formulário1"

    Este trecho você insere logo após o
    If lblTempo.Caption = "00:01:00" Then


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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 12/9/2018, 18:04

    JPaulo
    Perfeito funciona de boa, mas como meu projeto tem vários forms que podem estar aberto ao mesmo tempo, teria como fechar independente de qual formulário estivesse e retornasse ao forma frmlogin. Pensei que pudesse inserir o mesmo código em todos os forms mas não funciona a casos que um form necessita do outro para funcionamento.
    Ou seja fechar quando o sistema tiver inativo independente do form que estiver logado

    Grato
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 12/9/2018, 18:40

    Para isso tem de ser em função num módulo VBA.
    Código:
    Public Function fechaforms ()
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentProject
    For Each obj In dbs.AllForms
      If obj.IsLoaded = True Then
        DoCmd.Close acForm, obj.Name, acSaveYes
      End If
    Next obj
    DoCmd.OpenForm "SeuformLogin"
    End Function

    No lugar do trecho anterior, você chama a função
    Código:
    Call fechaforms


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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 12/9/2018, 19:23

    não entendi
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 12/9/2018, 22:58

    Simplificando
    Cole a função que passei na última mensagem, num módulo e salve.

    Delete o trecho que tinha inserido no formulário.

    Chame a função logo após esta instrução

    If lblTempo.Caption = "00:01:00" Then
    Call fechaforms



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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 13/9/2018, 12:08

    JPaulo

    Acho que não estou sabendo me expressar.

    Na verdade é assim quando o sistema estiver ocioso por um periodo independente de qual tela (form) esteja, seja fechado e retorne ao form de login

    Teria que colocar o codigo em todos os forms ?

    Se sim, teria como ao sair do form1 para  form2, o codigo no form1 seja encerrado para que o sistema não seja fechando por inatividade do primeiro form (form1)

    Será que fui mais claro ou piorei ?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 13/9/2018, 13:13

    Ola;

    Vamos por partes;

    Esta função você vai inseri-la num modulo e salve-o com o nome a seu gosto;

    Código:
    Public Function fechaforms()
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentProject
    For Each obj In dbs.AllForms
      If obj.IsLoaded = True Then
        DoCmd.Close acForm, obj.Name, acSaveYes
      End If
    Next obj
    DoCmd.OpenForm "SeuformLogin"
    End Function

    Este trecho de código e a label "lblTempo", terá de estar presente em todos os seus formularios;

    Código:
    Private Sub Form_Timer()
    'By JPaulo ®️? Maximo Access
    Static strHora As Integer
    Static strMinutos As Integer
    Static strSegundos As Integer

           If Trim(lblTempo.Caption) = "00:00:00" Then
               strHora = 0
               strMinutos = 0
               strSegundos = 0
           End If

       strSegundos = strSegundos + 1
      
           If strSegundos = 60 Then
               strSegundos = 0
               strMinutos = strMinutos + 1
           If strMinutos = 60 Then
               strMinutos = 0
               strHora = strHora + 1
           If strHora = 24 Then
           strHora = 0
          End If
        End If
      End If

       lblTempo.Caption = Format(strHora, "00") & ":" & _
       Format(strMinutos, "00") & ":" & _
       Format(strSegundos, "00")
    'tempo de inatividade do banco para encerramento, aqui o exemplo são de 1 minuto
    If lblTempo.Caption = "00:01:00" Then
        Call fechaforms
    End If
    End Sub


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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 13/9/2018, 13:53

    Ja tinha feito isso, acontece que passando para outro form sem fechar o atual quando da o tempo inativo ele fecha o sistema, mas ainda estamos trabalhando em outro form


    JPAULO, só da pra fazer doação pelo paypal via cartão ?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 13/9/2018, 15:56

    Certo, não me tinha ocorrido que ficaria um form aberto.

    Nesse caso ao abrir o outro formulario, só parando o time do 1º formulario.

    Quanto á outra pergunta, respondo por mensagem privada.

    Vou tentar criar aqui um exemplo.


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

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

    Ou ainda: Aqui (Novo)

    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.]
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 13/9/2018, 16:41

    Vamos imaginar que o frm1 deste exemplo é o seu form principal.

    Cenários:
    Ao abrir o frm1 inciar o relógio, que se passar com o mouse no detalhe fica a zeros.

    Se abrir o frm2 sem mexer no frm1, o reláogio do frm1 vai parar a contagem e jamais fechará.

    Se algum formulario estiver com tempo ocioso durante 1 minuto, todos se irão fechar e o frm1 ficará aberto.

    Download






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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 13/9/2018, 18:08

    Desculpa ai pode ser que eu esteja pedindo algo impossível.

    Desta forma também não resolve a questão, porque se eu abrir frmlogin e chamar formCadastroCliente e em seguida acessar o formDetalheDoCliente consequentemente quando o tempo ocioso do formCadastroCliente findar independente de estar trabalhando no formDetalheDoCliente, ele vai me fechar os formularios e voltar em frmlogin, que nunca fecha,
    Se eu estiver certo volta a estaca zero.
    E também porque tenho que especificar ao fechar o qual quero fechar e o qual vou abrir. o que torna inviável ja que trabalho com muitos forms no sistema
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Tempo ocioso fechar forms

    Mensagem  JPaulo em 14/9/2018, 11:13

    Vanderlei, eu apenas fiz para 2 forms, você tem de fazer o mesmo para todos os forms, caso contrario não vai funcionar.

    Não conheço de momento outra forma subtil de fazer o que pretende, lamento amigo.


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

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

    Ou ainda: Aqui (Novo)

    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.]

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 14/9/2018, 16:20

    De qualquer forma, obrigado pela ajuda

    Vanderlei
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 20/01/2011

    Re: Tempo ocioso fechar forms

    Mensagem  Vanderlei em 4/10/2018, 17:15

    Pessoal

    Como pesquisei em outros lugares as também não encontrei, resolvi encher mais um pouco sobre o timer no form
    Precisaria que quando eu passasse do form1 para o form2 o timer fosse zerado e parado, e a contagem iniciado no form2.....

      Data/hora atual: 18/11/2018, 08:35