Newsgroup: it.comp.appl.access
Titolo: chiudere il client se non viene utilizzato per alcuni minuti

Ciao ragazzio, io avrei necessita di chiude i client se non vengono 
utilizzati per alcuni minuti, questo perchè molti utenti lo lasciano aperto.
ho già visto la DEMO di @Alex Forzare il LogOff dei Client e sono riuscito 
ad implementare il codice (copiandolo chiaramente) e solo che cosi si 
chiudono tutti i client e non quelli non utilizzati.
Qualche dritta?
Grazie


Beh quel codice fà quello, se vuoi che faccia altro devi
modificarlo...!
Nel tuo caso non serve usare un controllo lato Server, ma devi
implementare un controllo lato Client...!
Normalmente si usa sempre una Form(Hidden) nella quale su Timer
verifichi 3 cose sostanziali:
Screen.ActiveControl
Screen.ActiveForm
Screen.ActiveReport
Memorizzi in una variabile Static il Nome dei 3 Oggetti(gestione
errori ovviamente se il Report non è aperto avrai errore...!) quando
per più di 5minuti il Nome di almeno uno dei 3 non cambia(o nel caso
del controllo anche il suo contenuto da leggere con proprietà Text se
è una TextBox, con Value per Combo/List/ecc...) fai la chiusura...!
@Alex

 ha scritto nel messaggio 
news:1176842822.3...@y5g2000hsa.googlegroups.com...



Screen.ActiveControl
Screen.ActiveForm
Screen.ActiveReport

@Alex
Ciao @Alex ti dispiacerebbe farmi qualche esempio su come fare riferimento a 
"Screen.ActiveControl"
"Screen.ActiveForm" "Screen.ActiveReport"?
CIao

 CIao
@Alex

è una TextBox, con Value per Combo/List/ecc...) fai la chiusura...!
per cui chiedevo se era possibile avere un esempio in merito,
questo come va?
Private sub timer()
Static maschera as form
Static report as report
Static controllo as control
maschera = 
screen.activeform.name
report = 
screen.activereport.name
controllo = 
screen.activecontrol.name
poi in che modo controllo che il nome di almeno uno dei tre non cambia?
if (maschera = "nomemaschra") or (report = "nomereport") or (controllo = 
"Bhoooo") then
  docmd.quit
 end if
end sub
Sotto l'evento "load" della maschera(Hidden credo sia "me.visible = false" 
no?) inserisco:
me.timerinterval = 300000
Grazie ancora 

 ha scritto nel messaggionews:1176886129.8...@b58g2000hsg.googlegroups.com...

Una cosa simile:
Private Sub Form_Timer()
    ' IDLEMINUTES determines how much idle time to wait for before
    ' running the IdleTimeDetected subroutine.
    Const IDLEMINUTES = 1
    Static strPrevControlName As String
    Static strPrevFormName As String
    Static sngExpiredTime As Single
    Dim strActiveFormName As String
    Dim strActiveControlName As String
    Dim sngExpiredMinutes As Single
    On Error Resume Next
    ' Get the active form and control name.
    strActiveFormName = 
Screen.ActiveForm.Name
    If Err Then
        strActiveFormName = "No Active Form"
        Err = 0
    End If
    strActiveControlName = 
Screen.ActiveControl.Name
        If Err Then
        strActiveControlName = "No Active Control"
        Err = 0
    End If
    ' Record the current active names and reset sngExpiredTime 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 (strPrevControlName = "") Or (strPrevFormName = "") _
        Or (strActiveFormName <> strPrevFormName) _
        Or (strActiveControlName <> strPrevControlName) Then
         strPrevControlName = strActiveControlName
         strPrevFormName = strActiveFormName
         sngExpiredTime = 0
    Else
        ' ...otherwise the user was idle during the time interval, so
        ' increment the total expired time.
        sngExpiredTime = sngExpiredTime + Me.TimerInterval
    End If
    ' Does the total expired time exceed the IDLEMINUTES?
    sngExpiredMinutes = (sngExpiredTime / 1000) / 60
    If sngExpiredMinutes >= IDLEMINUTES Then
        ' ...if so, then reset the expired time to zero...
        sngExpiredTime = 0
        ' ...and call the IdleTimeDetected subroutine.
        IdleTimeDetected sngExpiredMinutes
    End If
End Sub
Sub IdleTimeDetected(sngExpiredMinutes)
   Dim strMessage As String
   strMessage = "No user activity detected in the last" & vbCrLf
   strMessage = strMessage & sngExpiredMinutes & " minute(s)!"
   MsgBox strMessage, vbInformation, "No Sign of Activity!"
End Sub
@Alex

 ha scritto nel messaggionews:1176886129.8...@b58g2000hsg.googlegroups.com...

Una cosa simile:
Private Sub Form_Timer()
    ' IDLEMINUTES numero dei Minuti da attendere
    Const IDLEMINUTES = 1
    Static strPrevControlName As String
    Static strPrevFormName As String
    Static strPrevReportName As String
    Static sngExpiredTime As Single
    Dim strActiveFormName As String
    Dim strActiveReportName As String
    Dim strActiveControlName As String
    Dim sngExpiredMinutes As Single
    On Error Resume Next
    strActiveFormName = 
Screen.ActiveForm.Name
    If Err Then
        strActiveFormName = "No Active Form"
        Err = 0
    End If
    strActiveReportName = 
Screen.ActiveForm.Name
    If Err Then
        strActiveFormName = "No Active Report"
        Err = 0
    End If
    strActiveControlName = 
Screen.ActiveControl.Name
        If Err Then
        strActiveControlName = "No Active Control"
        Err = 0
    End If
    If (strPrevControlName = "") Or (strPrevFormName = "") Or
(strPrevReportName = "") _
        Or (strActiveFormName <> strPrevFormName) _
        Or (strActiveReportName <> strPrevReportName) _
        Or (strActiveControlName <> strPrevControlName) Then
         strPrevControlName = strActiveControlName
         strPrevFormName = strActiveFormName
         strPrevReportName = strActiveReportName
         sngExpiredTime = 0
    Else
        sngExpiredTime = sngExpiredTime + Me.TimerInterval
    End If
    sngExpiredMinutes = (sngExpiredTime / 1000) / 60
    If sngExpiredMinutes >= IDLEMINUTES Then
        sngExpiredTime = 0
        DoCmd.Quit acQuitSaveAll
    End If
End Sub
@Alex

 Grazie ancora
Dimenticavo...
TimerInterval lo puoi impostare come proprietà definita "Intervallo
Timer"... io lo imposterei a 1000 un secondo...!
La Form la apri in modalità Hidden senza mettere codice, metti una
Macro AutoExec che apra oltre la Form Principale la Form(questa di cui
parliamo) in modalità Nascosta.....
@Alex

    On Error Resume Next







@Alex sei grande.
Grazie 1000000000000000000000000000

 ha scritto nel messaggio 
news:1176930013....@n76g2000hsh.googlegroups.com...
[CUT]

Dimenticavo...


@Alex
magico @Alex, grazie davvero.