Artigo: 210297 - Última revisão: terça-feira, 28 de Abril de 2009 - Revisão: 4.0

A detectar o tempo de inactividade do utilizador ou de inactividade 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 | Reduzir tudo

Sumário

Este artigo mostra como criar um procedimento que será executada se a aplicação do Access não detecta qualquer intervenção do utilizador para um período de tempo especificado. Envolve a criar um formulário oculto que contém código que mantém a contagem de tempo de inactividade.

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Nota Utilizar este código para adicionar registos a uma tabela quando uma base de dados está inactivo pode resultar em consumo de memória excessiva.

Como criar o formulário DetectIdleTime

  1. Criar um formulário em branco que não seja baseado em qualquer tabela ou consulta e o nome DetectIdleTime.
  2. Definir as seguintes propriedades de formulário:
       OnTimer: [Event Procedure]
       TimerInterval: 1000
    						
    NOTA: indica a definição TimerInterval frequência (em milissegundos) a aplicação verifica por inactividade do utilizador. Uma definição de 1000 é igual a 1 segundo.
  3. Defina a propriedade OnTimer 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. Crie o seguinte procedimento no módulo de 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 utilizar o formulário DetectIdleTime

Para ocultar o formulário DetectIdleTime quando abre a aplicação, crie a seguinte macro de execução automática:
   Macro Name   Action
   ----------------------------
   AutoExec     OpenForm


   AutoExec Action Arguments
   ----------------------------
   OpenForm
   Form Name: DetectIdleTime
   View: Form
   Filter Name:
   Where Condition:
   Data Mode: Edit
   Window Mode: Hidden
				
pode adicionar código ao procedimento IdleTimeDetected para que o procedimento é executado se não existir nenhuma actividade do utilizador do tempo especificado no valor constante IDLEMINUTES. Por exemplo, pode ter acesso sair com o seguinte procedimento de evento:
Sub IdleTimeDetected (ExpiredMinutes)
   Application.Quit acSaveYes
End Sub
				
este procedimento faz com que o acesso a sair da aplicação, guardar todos os objectos sem apresentar 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 , escreva evento Timer na Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )