Una sola azione, come il passaggio da un controllo su un oggetto a un altro controllo, può attivare diversi eventi che si verificano in una determinata sequenza. È importante sapere quando e in quale ordine si verificano gli eventi, perché questi due aspetti possono influire sul modo e sul momento di esecuzione di macro e routine evento. Se ad esempio sono presenti due routine evento che devono essere eseguite in un determinato ordine, è necessario assicurarsi che gli eventi ai quali sono associate si verifichino nello stesso ordine.

In questo articolo

Ordine degli eventi per i controlli sulle maschere

Gli eventi per i controlli sulle maschere si verificano quando si sposta lo stato attivo su un controllo e quando vengono modificati e aggiornati i dati in un controllo.

Nota: In Microsoft Office Access i nomi degli eventi sono in inglese in Visual Basic Editor, mentre sono localizzati nella finestra delle proprietà e nel Generatore di macro. L'evento denominato Su attivato nella finestra delle proprietà e nel Generatore di macro è riportato con il nome GotFocus in Visual Basic Editor. Negli esempi di questo articolo per i nomi degli eventi viene usato il formato di Visual Basic, Applications Edition (VBA).

Spostamento dello stato attivo su un controllo

Quando lo stato attivo viene spostato su un controllo in una maschera, ad esempio se si apre una maschera che contiene uno o più controlli attivi o ci si sposta su un controllo diverso nella stessa maschera, gli eventi Enter e GotFocus si verificano nel seguente ordine:

Enter Freccia GotFocus

Quando si apre una maschera, gli eventi Enter e GotFocus si verificano dopo gli eventi associati all'apertura della maschera, ad esempio Open, Activate e Current, come riportato di seguito:

Open (form) FrecciaActivate (maschera) FrecciaCurrent (maschera) FrecciaEnter (controllo) FrecciaGotFocus (controllo)

Quando un controllo di una maschera perde lo stato attivo, ad esempio quando si chiude una maschera che contiene uno o più controlli attivi oppure quando ci si sposta su un controllo diverso nella stessa maschera, gli eventi Exit e LostFocus si verificano nell'ordine seguente:

Exit Freccia LostFocus

Quando si chiude una maschera, gli eventi Exit e LostFocus si verificano prima degli eventi associati alla chiusura della maschera, ad esempio Unload, Deactivate e Close, come riportato di seguito:

Exit (controllo) FrecciaLostFocus (controllo) FrecciaUnload (maschera) FrecciaDeactivate (maschera) FrecciaClose (maschera)

Modifica e aggiornamento dei dati di un controllo

Quando si immettono o si modificano dati in un controllo di una maschera e quindi si sposta lo stato attivo su un controllo diverso, si verificano gli eventi BeforeUpdate e AfterUpdate:

BeforeUpdate Freccia Afte rUpdate

Gli eventi Exit e LostFocus del controllo di cui si modifica il valore si verificano dopo gli eventi BeforeUpdate e AfterUpdate:

BeforeUpdate Freccia AfterUpdate Freccia Exit Freccia LostFocus

Quando si modifica il testo in una casella di testo o nella sezione casella di testo di una casella combinata, si verifica l'evento Change. Questo evento si verifica ogni volta che il contenuto del controllo viene modificato, ma prima dello spostamento dello stato attivo su un controllo o un record diverso, pertanto prima che si verifichino gli eventi BeforeUpdate e AfterUpdate. La sequenza di eventi riportata di seguito si verifica per ogni tasto che viene premuto in una casella di testo o nella sezione casella di testo di una casella combinata:

KeyDown Freccia KeyPress Freccia Dirty Freccia Modifica Freccia KeyUp

L'evento NotInList si verifica se si immette in una casella combinata un valore non contenuto nell'elenco della casella combinata e in seguito si tenta di spostare lo stato attivo su un altro controllo o record. L'evento NotInList si verifica dopo gli eventi della tastiera e gli eventi Change relativi alla casella combinata, ma prima degli eventi relativi agli altri controlli o alla maschera. Se la proprietà LimitToList della casella combinata è impostata su Sì, l'evento Error della maschera si verifica subito dopo l'evento NotInList:

KeyDown Freccia KeyPress Freccia'errore Frecciamodifica FrecciaKeyUp Frecciaerrore0 NotInList

Inizio pagina

Ordine degli eventi per i record sulle maschere

Gli eventi relativi ai record sulle maschere si verificano quando si sposta lo stato attivo su un record diverso, si aggiornano i dati di un record o si eliminano uno o più record esistenti oppure si crea un nuovo record.

Spostamento dello stato attivo su record e aggiornamento di dati dei record

Quando si sposta lo stato attivo su un record esistente di una maschera, si immettono o si modificano i dati nel record e quindi si sposta lo stato attivo su un record diverso, per la maschera si verifica la sequenza di eventi seguente:

Current (maschera) FrecciaBeforeUpdate (maschera) FrecciaAfterUpdate (maschera) FrecciaCorrente (maschera)

Dopo l'uscita dal record di cui sono stati modificati i dati e prima dell'entrata nel record successivo, si verificano gli eventi Exit e LostFocus per il controllo con lo stato attivo. Questi eventi si verificano dopo gli eventi BeforeUpdate e AfterUpdate relativi alla maschera, come riportato di seguito:

BeforeUpdate (maschera) FrecciaAfterUpdate (maschera) FrecciaExit (controllo) FrecciaLostFocus (controllo) FrecciaCorrente (maschera)

Durante lo spostamento dello stato attivo tra i controlli di una maschera, si verificano eventi per ogni controllo. Si verificano ad esempio le sequenze di eventi riportate di seguito quando si eseguono le operazioni seguenti:

  • Apertura di una maschera e modifica dei dati di un controllo:

    Current (maschera) FrecciaEnter (controllo) FrecciaGotFocus (controllo) FrecciaBeforeUpdate (controllo) FrecciaAfterUpdate (controllo)

  • Spostamento dello stato attivo su un controllo diverso:

    Exit (controllo1) FrecciaLostFocus (controllo1) FrecciaEnter (controllo2) FrecciaGotFocus (controllo2)

  • Spostamento dello stato attivo su un record diverso:

    BeforeUpdate (maschera) FrecciaAfterUpdate (maschera) FrecciaExit (controllo2) FrecciaLostFocus (controllo2) FrecciaCorrente (maschera)

Eliminazione di record

Quando si elimina un record, per la maschera si verificano gli eventi riportati di seguito e Microsoft Office Access visualizza una finestra di dialogo in cui viene chiesto di confermare l'eliminazione:

Eliminare Freccia PrimaDiConfermaEli Freccia AfterDelConfirm

Se si annulla l'evento Delete, gli eventi BeforeDelConfirm e AfterDelConfirm non si verificano e la finestra di dialogo non viene visualizzata.

Creazione di un nuovo record

Quando si sposta lo stato attivo su un record nuovo (vuoto) in una maschera e quindi si crea un nuovo record digitando dati in un controllo, si verifica la sequenza di eventi seguente:

Current (maschera) Freccia(controllo) FrecciaGotFocus (controllo) FrecciaBeforeInsert (maschera) FrecciaAfterInsert (maschera)

L'evento BeforeInsert (maschera) viene attivato non appena si inizia a digitare nel controllo. L'evento AfterInsert (maschera) viene attivato dopo l'uscire dal record.

Gli eventi BeforeUpdate e AfterUpdate per i controlli sulla maschera e per il nuovo record si verificano dopo l'evento BeforeInsert e prima dell'evento AfterInsert.

Inizio pagina

Ordine degli eventi per le maschere e le sottomaschere

Gli eventi relativi alle maschere si verificano quando si apre o si chiude una maschera, ci si sposta tra maschere o si usano i dati presenti in una maschera o una sottomaschera.

Apertura e chiusura di una maschera

Quando si apre una maschera, per la maschera si verifica la sequenza di eventi seguente:

Aprire Freccia caricare Freccia ridimensionamento Freccia attivare Frecciacorrente

Se nella maschera non sono presenti controlli attivi, si verifica l'evento GotFocus per la maschera dopo l'evento Activate, ma prima dell'evento Current.

Quando si chiude una maschera, per la maschera si verifica la sequenza di eventi seguente:

Scarica e Freccia disattiva Freccia Chiudi

Se nella maschera non sono presenti controlli attivi, si verifica l'evento LostFocus per la maschera dopo l'evento Unload, ma prima dell'evento Deactivate.

Spostamento tra maschere

Quando si passa tra due maschere aperte, si verifica l'evento Deactivate per la prima maschera e l'evento Activate per la seconda maschera:

Deactivate (maschera1) FrecciaActivate (maschera2)

L'evento Deactivate per una maschera si verifica anche quando si passa dalla maschera a un'altra scheda di oggetto di Access. L'evento Deactivate tuttavia non si verifica quando si passa a una finestra di dialogo, a una maschera la cui proprietà PopUp è impostata su o a una finestra di un altro programma.

Nota:  L'evento Open non si verifica se si sposta lo stato attivo su una maschera già aperta, anche se lo stato attivo è stato spostato su tale maschera eseguendo un'azione OpenForm.

Uso dei dati di una maschera

Gli eventi relativi a maschere e controlli si verificano quando ci si sposta tra i record nella maschera e si modificano dati. Quando ad esempio si apre per la prima volta una maschera, si verifica la sequenza di eventi seguente:

Open (form) FrecciaLoad (maschera) FrecciaResize (maschera) FrecciaActivate (maschera) FrecciaCurrent (maschera) FrecciaEnter (controllo)0 GotFocus (controllo)

Analogamente, quando si chiude una maschera, si verifica la sequenza di eventi seguente:

Exit (controllo) FrecciaLostFocus (controllo) FrecciaUnload (maschera) FrecciaDeactivate (maschera) FrecciaClose (maschera)

Se sono stati modificati dati in un controllo, gli eventi BeforeUpdate e AfterUpdate del controllo e della maschera si verificano prima dell'evento Exit relativo al controllo.

Uso di sottomaschere

Quando si apre una maschera che contiene una sottomaschera, la sottomaschera e i relativi record vengono caricati prima della maschera principale. Pertanto, gli eventi della sottomaschera e dei relativi controlli, ad esempio Open,Current,Entere GotFocus,si verificano prima degli eventi della maschera. Tuttavia, l'evento Activate non si verifica per le sottomaschere. Di conseguenza, l'apertura di una maschera principale attiva un evento Activate solo per la maschera principale.

Analogamente, quando si chiude una maschera che contiene una sottomaschera, la sottomaschera e i relativi record vengono scaricati dopo la maschera. L'evento Deactivate non si verifica per le sottomaschere. Di conseguenza, la chiusura di una maschera principale attiva un evento Deactivate solo per la maschera principale. Gli eventi per i controlli, la maschera e la sottomaschera si verificano nell'ordine seguente:

  1. Eventi dei controlli della sottomaschera (ad esempio Exit e LostFocus)

  2. Eventi dei controlli della maschera (incluso il controllo sottomaschera)

  3. Eventi della maschera (ad esempio Deactivate e Close)

  4. Eventi della sottomaschera

Nota: Poiché gli eventi di una sottomaschera si verificano dopo la chiusura della maschera principale, alcuni eventi, ad esempio l'annullamento della chiusura della maschera principale da un evento della sottomaschera, non si verificheranno. Può essere necessario spostare questi tipi di test di convalida in un evento della maschera principale.

Inizio pagina

Ordine degli eventi per le sequenze di tasti e i clic del mouse

Gli eventi della tastiera per maschere e controlli si verificano quando si premono i tasti o si inviano sequenze di tasti mentre la maschera o il controllo ha stato attivo. Gli eventi del mouse per maschere, sezioni di maschere e controlli nelle maschere si verificano quando si fa clic sui pulsanti del mouse mentre il puntatore del mouse si trova su una maschera, una sezione o un controllo. Gli eventi del mouse si verificano anche quando si sposta il puntatore del mouse su una maschera, una sezione o un controllo.

Eventi della tastiera

Quando si preme e si rilascia un tasto mentre lo stato attivo si trova su un controllo di una maschera oppure si usa l'azione o l'istruzioneSendKeys per inviare una sequenza di tasti, si verifica la sequenza di eventi seguente:

KeyDown Freccia KeyPress Freccia KeyUp

Quando si preme e si rilascia un tasto o si invia una sequenza di tasti nel set di caratteri ANSI, si verificano tutti gli eventi KeyDown,KeyPresse KeyUp. Se si preme e si tiene premuto un tasto ANSI, gli eventi KeyDown e KeyPress si alternano ripetutamente(KeyDown,KeyPress,KeyDown,KeyPresse così via) finché non si rilascia il tasto; si verifica l'evento KeyUp.

Se si preme e si rilascia un tasto non ANSI, si verificano gli eventi KeyDowne KeyUp. Se si tiene premuto un tasto non ANSI, l'evento KeyDown si verifica più volte finché non si rilascia il tasto e quindi si verifica l'evento KeyUp.

Se la pressione di un tasto attiva un altro evento per un controllo, quest'ultimo evento si verifica dopo l'evento KeyPress, ma prima dell'evento KeyUp. Se ad esempio una sequenza di tasti modifica il testo in una casella di testo, attivando un evento Change, si verifica la sequenza di eventi seguente:

KeyDown Freccia KeyPress FrecciaModifica FrecciaKeyUp

Se una sequenza di tasti provoca lo spostamento dello stato attivo da un controllo a un altro, si verifica l'evento KeyDown per il primo controllo, mentre gli eventi KeyPress e KeyUp si verificano per il secondo controllo. Se ad esempio si modificano dati in un controllo e quindi si preme TAB per spostarsi al controllo successivo, si verifica la sequenza di eventi seguente:

  • Primo controllo:

    KeyDown Freccia BeforeUpdate Freccia AfterUpdate Freccia Exit Freccia LostFocus

  • Secondo controllo:

    Enter Freccia GotFocus Freccia KeyPress Freccia KeyUp

Eventi del mouse

Quando si fa clic e quindi si rilascia un pulsante del mouse mentre il puntatore si trova su un controllo di una maschera, per il controllo si verifica la sequenza di eventi seguente:

Pulsante Su Freccia Mouse su Freccia clic

Se un controllo ha lo stato attivo e si fa clic su un altro controllo per spostare lo stato attivo su di esso, si verifica la sequenza di eventi seguente:

  • Primo controllo:

    Exit Freccia LostFocus

  • Secondo controllo:

    Enter Freccia GotFocus Freccia MouseDown Freccia MouseUp Freccia clic

Se ci si sposta in un record diverso e quindi si fa clic su un controllo, si verifica anche l'evento Current della maschera prima dell'evento Enter del controllo.

Se si fa doppio clic su un controllo, si verificano gli eventi Click e DblClick. Quando ad esempio si fa doppio clic su un controllo che non è un pulsante di comando, per il controllo si verifica la sequenza di eventi seguente:

Con MouseD è Freccia mouse su Frecciaclic Freccia clic su Freccia Su FrecciaMouseUp

Quando si fa doppio clic su un pulsante di comando, si verifica la sequenza di eventi riportata sopra, seguita da un secondo evento Click.

L'evento MouseMove di una maschera, una sezione o un controllo si verifica quando si sposta il puntatore del mouse sulla maschera, sulla sezione o sul controllo. Questo evento è indipendente dagli altri eventi del mouse.

Inizio pagina

Ordine degli eventi per i report e le sezioni di report

Gli eventi di report e sezioni di report si verificano quando un report viene aperto per essere stampato o visualizzato in anteprima oppure quando viene chiuso.

Eventi di report

Quando si apre un report per stamparlo o visualizzarlo in anteprima e quindi lo si chiude o ci si sposta in un'altra scheda di oggetto di Access, per il report si verifica la sequenza di eventi seguente:

Aprire Freccia attivare Freccia chiudi Freccia disattiva

Quando ci si sposta tra due report aperti, l'evento Deactivate si verifica per il primo report e l'evento Activate per il secondo report:

Deactivate (report1) FrecciaActivate (report2)

L'evento Deactivate per un report si verifica anche quando si passa dal report a un'altra scheda di oggetto di Access. L'evento Deactivate tuttavia non si verifica quando si passa a una finestra di dialogo, a una maschera la cui proprietà PopUp è impostata su o a una finestra di un altro programma.

Quando si apre un report basato su una query, Access attiva l'evento Open per il report prima dell'esecuzione della query sottostante. Di conseguenza, è possibile impostare i criteri per il report usando una macro o una routine evento che risponda all'evento Open. La macro o la routine evento, ad esempio, potrebbe causare l'apertura di una finestra di dialogo personalizzata nella quale immettere i criteri per il report.

Eventi per sezioni di report

Quando si stampa o si visualizza in anteprima un report, gli eventi Format e Print si verificano per le sezioni di report dopo gli eventi Open e Activate del report e prima degli eventi Close o Deactivate del report:

Aprire (report) Freccia(report) Freccia(sezione report) FrecciaStampa(sezione report) FrecciaChiudi (report) FrecciaDisattivare (report)

Sicurezza    È possibile usare la visualizzazione Report per abilitare il filtro dei report agli utenti. A differenza di Anteprima di stampa, tuttavia, gli eventi Formato e Stampa di qualsiasi sezione non si verificano nella visualizzazione report. Si applica anche ai risultati delle funzioni VBA e alle procedure definite dall'utente visualizzate nei controlli (ad esempio le didascalie delle etichette, lo stato di visualizzazione, la formattazione condizionale, il ridimensionamento dei controlli e così via) all'interno di tali eventi. Pertanto, non usare codice in questo evento per formattare, nascondere o stampare dati riservati che potrebbero essere esposti. È consigliabile filtrare i dati o disabilitare Report Preview impostando la proprietà AllowReportView su No.

È possibile inoltre che gli eventi seguenti si verifichino durante o dopo la formattazione, ma prima dell'evento Print:

  • L'evento Retreat si verifica quando Access torna a una sezione precedente durante la formattazione di un report.

  • L'evento NoData si verifica se nel report non sono visualizzati record.

  • L'evento Page si verifica dopo la formattazione, ma prima della stampa. È possibile usare questo evento per personalizzare l'aspetto del report stampato.

Inizio pagina

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Office Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×