Chiusura mask per inattività

di il
5 risposte

Chiusura mask per inattività

Una vecchia procedura Access, non specificamente sviluppata per la multi-utenza e residente su server locale, è utilizzata da diversi utenti che vi accedono tramite dei link presenti nella propria postazione di lavoro.
Come è possibile chiudere per inattività una mask aperta in una qualsiasi postazione di lavoro tramite VBA?
Grazie per i suggerimenti.

5 Risposte

  • Re: Chiusura mask per inattività

    Si potrebbe usare un Timer per verificare periodicamente quanto tempo è trascorso dall'ultima volta che l'utente ha eseguito una operazione, e intercettare alcuni eventi chiave (clic, movimento mouse, pressione tasti, ecc.) per resettare alla data/ora corrente tale informazione.

    Quando si scatena l'evento del timer, si calcola la differenza tra la data/ora corrente e quella a cui risale l'ultima operazione rilevata: se è superiore all'intervallo prestabilito, allora si chiude la maschera.

    Ciao!
  • Re: Chiusura mask per inattività

    Ho provato la soluzione simile a questa che mi suggerisci ma, probabilmente, non sono stato capace di implementare correttamente il codice e il risultato non è stato quello voluto. Proverò a modificare le istruzioni e, se non ne vengo fuori, chiederò l'aiuto della comunità. Un cordiale saluto.
  • Re: Chiusura mask per inattività

    codificoPerPassione ha scritto:


    Ho provato la soluzione simile a questa che mi suggerisci ma, probabilmente, non sono stato capace di implementare correttamente il codice e il risultato non è stato quello voluto.
    Prova a postare la parte di codice rilevante, così verifichiamo qual è il procedimento seguito.
  • Re: Chiusura mask per inattività

    Il tempo di inattività passa per un'attivazione dell'evento TIMER dopo aver impostato un TimerInterval di buonsenso, quindi 5secondi... o maggiore.

    Nell'evento devi verificare, e memorizzare, ad esempio il Controllo con il Focus, che si ricava con Screen.ActiveControl.
    Se al successivo EVENTO è sempre lui, è indice di INATTIVITA', quindi inizi ad INCREMENTARE un COUNTER definito STATIC nella Sub Evento o definito a livello di Maschera.
    Sapendo che il controllo è fatto ogni 5sec(n) definisci il tempo ragionevole di Inattività, ipotiziamo 60sec, quindi il Counter sarà arrivato a 6, a quel punto chiudi la Form.
    Devi guardare anche la Form Attiva... se la form attiva fosse altra, e questo lo devi sapere tu come gestisci le form, devi contemporaneamente controllare FormAttiva e ControlloAttivo, in quanto se la Form non è attiva, a vantaggio di altre potresti avere qualche problema...

    Quì trovi alcuni esempi:
    https://www.access-programmers.co.uk/forums/threads/autokick-when-idle-code.115829/
    https://bytes.com/topic/access/answers/944998-how-close-form-after-certain-time-inactivity

    Saluti
  • Re: Chiusura mask per inattività

    Grazie Alex! Illuminante come sempre. Proverò a ri-modellare il mio codice e se avrò problemi seguirò il consiglio di Alka a cui rivolgo analogo pensiero di gratitudine.

Devi accedere o registrarti per scrivere nel forum
5 risposte