ID do artigo: 210297 - Última revisão: terça-feira, 28 de abril de 2009 - Revisão: 4.0

Como detectar tempo ocioso do usuário ou de inatividade no Access 2000

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.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo mostra como criar um procedimento que será executado se o seu aplicativo do Access não detectar qualquer entrada do usuário por um período de tempo especificado. Ele envolve criar um formulário oculto que contém código que mantém uma contagem de tempo ocioso.

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.

Observação Usando este código para adicionar registros a uma tabela quando um banco de dados estiver ocioso pode resultar em consumo de memória excessiva.

Como criar o formulário DetectIdleTime

  1. Crie um formulário em branco que não é baseado em nenhuma tabela ou consulta e denomine DetectIdleTime.
  2. Defina as propriedades de formulário a seguir:
       OnTimer: [Event Procedure]
       TimerInterval: 1000
    						
    Observação: indica a configuração IntervaloDoCronômetro freqüência (em milissegundos) o aplicativo procura inatividade do usuário. Uma configuração de 1000 é igual a 1 segundo.
  3. Defina a propriedade NoCronômetro para o seguinte procedimento de evento:
    Sub Form_Timer()
       ' IDLEMINUTES determines how much idle time to wait for before
       ' running the IdleTimeDetected subroutine.
       Const IDLEMINUTES = 1
    
       Static PrevControlName As String
       Static PrevFormName As String
       Static ExpiredTime
    
       Dim ActiveFormName As String
       Dim ActiveControlName As String
       Dim ExpiredMinutes
    
       On Error Resume Next
    
       ' Get the active form and control name.
    
       ActiveFormName = Screen.ActiveForm.Name
       If Err Then
          ActiveFormName = "No Active Form"
          Err = 0
       End If
    
       ActiveControlName = Screen.ActiveControl.Name
          If Err Then
          ActiveControlName = "No Active Control"
          Err = 0
       End If
    
       ' Record the current active names and reset ExpiredTime if:
       '    1. They have not been recorded yet (code is running
       '       for the first time).
       '    2. The previous names are different than the current ones
       '       (the user has done something different during the timer
       '        interval).
       If (PrevControlName = "") Or (PrevFormName = "") _
         Or (ActiveFormName <> PrevFormName) _
         Or (ActiveControlName <> PrevControlName) Then
          PrevControlName = ActiveControlName
          PrevFormName = ActiveFormName
          ExpiredTime = 0
       Else
          ' ...otherwise the user was idle during the time interval, so
          ' increment the total expired time.
          ExpiredTime = ExpiredTime + Me.TimerInterval
       End If
    
       ' Does the total expired time exceed the IDLEMINUTES?
       ExpiredMinutes = (ExpiredTime / 1000) / 60
       If ExpiredMinutes >= IDLEMINUTES Then
          ' ...if so, then reset the expired time to zero...
          ExpiredTime = 0
          ' ...and call the IdleTimeDetected subroutine.
          IdleTimeDetected ExpiredMinutes
       End If
    End Sub
    
    
    					
  4. Criar o procedimento a seguir no módulo do formulário:
    Sub IdleTimeDetected (ExpiredMinutes)
       Dim Msg As String
       Msg = "No user activity detected in the last "
       Msg = Msg & ExpiredMinutes & " minute(s)!"
       MsgBox Msg, 48
    End Sub
    
    					

Como usar o formulário DetectIdleTime

Para ocultar o formulário DetectIdleTime quando o aplicativo é aberto, crie a seguinte macro AutoExec:
   Macro Name   Action
   ----------------------------
   AutoExec     OpenForm


   AutoExec Action Arguments
   ----------------------------
   OpenForm
   Form Name: DetectIdleTime
   View: Form
   Filter Name:
   Where Condition:
   Data Mode: Edit
   Window Mode: Hidden
				
você pode adicionar código para o procedimento IdleTimeDetected para que o procedimento é executado se não houver nenhuma atividade do usuário para quantidade de tempo especificado no valor constante IDLEMINUTES. Por exemplo, você poderia ter acesso fechar com o seguinte procedimento de evento:
Sub IdleTimeDetected (ExpiredMinutes)
   Application.Quit acSaveYes
End Sub
				
esse procedimento faz com que o acesso a sair do aplicativo, salvando todos os objetos sem exibir uma caixa de diálogo.




Referências

Para obter mais informações sobre o evento Timer, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , digite o evento Timer no Assistente do Office ou no Assistente de resposta e, em seguida, clique em Pesquisar para exibir o tópico.













A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto kbhowtomaster kbprogramming KB210297 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 210297  (http://support.microsoft.com/kb/210297/en-us/ )