Yksi toiminto, esimerkiksi siirtyminen objektin yhdestä ohjainsta toiseen ohjausobjektiin voi käynnistää useita eri tapahtumia, jotka tapahtuvat tietyssä järjestyksessä. On tärkeää tietää, milloin tapahtumat tapahtuvat ja missä järjestyksessä ne tapahtuvat, koska tämä voi vaikuttaa siihen, miten ja milloin makrot tai tapahtumatoimintosarjat suoritetaan. Jos esimerkiksi on kaksi tapahtumatoimintosarjaa, jotka halutaan suorittaa tietyssä järjestyksessä, tulee varmistaa, että niihin liittyvät tapahtumat tapahtuvat samassa järjestyksessä.
Artikkelin sisältö
Lomakkeissa olevien ohjausobjektien tapahtumien järjestys
Asioita tapahtuu lomakkeiden ohjausobjekteissa, kun aktiivisuus siirretään ohjausobjektiin ja kun muutat ja päivität ohjausobjektin tietoja.
Huomautus: Microsoft Office Access näyttää tapahtuman nimet hieman eri tavalla Visual Basic -editorissa kuin ominaisuusikkunassa ja Makron muodostimessa. Esimerkiksi tapahtuma nimeltä On Got Focus lomakkeen ominaisuusikkunassa ja Makron muodostimessa on Visual Basic -editorissa nimeltään GotFocus. Tämän artikkelin esimerkeissä käytetään Visual Basic for Applications (VBA) -muotoa tapahtuman nimien osalta.
Kohdistuksen siirtäminen ohjausobjektiin
Kun siirrät kohdistuksen lomakkeen ohjausobjektiin (esimerkiksi avaamalla lomakkeen, joka sisältää yhden tai usean aktiivisen ohjausobjektin tai siirtämällä kohdistuksen toiseen saman lomakkeen ohjausobjektiin), Enter- ja GotFocus-tapahtumat tapahtuvat seuraavassa järjestyksessä:
Enter GotFocus
Kun avaat lomakkeen, Enter- ja GotFocus-tapahtumat suoritetaan lomakkeen avaukseen liittyvien tapahtumien jälkeen (kuten Open, Activate ja Current) seuraavasti:
Avaa (lomake) Activate (lomake) Current (lomake) Enter (ohjausobjekti) GotFocus (ohjausobjekti)
Kun kohdistus poistuu lomakkeen ohjausobjektista (kun esimerkiksi suljet lomakkeen, joka sisältää yhden tai usean aktiivisen ohjausobjektin tai siirryt toiseen saman lomakkeen ohjausobjektiin), Exit- ja LostFocus-tapahtumat tapahtuvat seuraavassa järjestyksessä:
Exit LostFocus
Kun suljet lomakkeen, Exit- ja LostFocus-tapahtumat suoritetaan ennen lomakkeen sulkemiseen liittyviä tapahtumia (kuten Unload, Deactivate ja Close) seuraavasti:
Exit (control) LostFocus (ohjausobjekti) Pura (lomake) Deactivate (lomake) Sulje (lomake)
Tietojen muuttaminen ja päivittäminen ohjausobjektissa
Kun siirryt tai muutat tietoja lomakkeen ohjausobjektissa ja siirrät sitten kohdistuksen toiseen ohjausobjektiin, tapahtumat BeforeUpdate ja AfterUpdate tapahtuvat:
EnnenPäivun Afte rUpdate
Exit- ja LostFocus-tapahtumat ohjausobjektille, jonka arvo muuttuu BeforeUpdate- ja AfterUpdate -tapahtumien jälkeen:
BeforeUpdate AfterUpdate Exit LostFocus
Kun muutat tekstiä tekstiruudussa tai yhdistelmäruudun tekstiruutuosassa, Change-tapahtuma tapahtuu. Tämä tapahtuma toteutuu aina, kun ohjausobjektin sisältö muuttuu,mutta ennen kuin siirrät kohdistuksen toiseen ohjausobjektiin tai tietueeseen (ja näin ollen ennen kuin tapahtumat BeforeUpdate ja AfterUpdate tapahtuvat). Seuraava tapahtumasarja tapahtuu jokaisen näppäimen kohdalla, jota painat tekstiruudussa tai yhdistelmäruudun tekstiruutuosassa:
KeyDown KeyPress Dirty Change KeyUp
Luettelosta puuttuessa-tapahtuma tapahtuu, kun syötät arvon yhdistelmäruutuun, jota ei ole yhdistelmäruudun luettelossa ja yrität sitten siirtää kohdistuksen toiseen ohjausobjektiin tai tietueeseen. NotInList -tapahtuma tapahtuu näppäimistötapahtumien jälkeen ja Change-tapahtumien jälkeen yhdistelmäruudulle, mutta ennen muiden ohjausobjektien tai lomakkeen tapahtumia. Jos yhdistelmäruudun LimitToList-ominaisuus asetetaan tilaan Ye, lomakkeen Error-tapahtuma tapahtuu heti NotInList -tapahtuman jälkeen:
KeyDown KeyPress Dirty Change KeyUp NotInList 0 Error
Lomakkeissa olevien tietueiden tapahtumien järjestys
Lomakkeissa olevien tietueiden tapahtumat toteutuvat, kun aktiivisuus siirretään toiseen tietueeseen, tietueen tiedot päivitetään, olemassa olevan tietue tai tietueet poistetaan tai uusi tietue luodaan.
Kohdistuksen siirtäminen tietueisiin ja tietueiden tietojen päivittäminen
Kun siirrät kohdistuksen olemassa olevaan tietueeseen lomakkeessa, lisäät tai muutat tietueen tietoja ja siirrät sitten kohdistuksen toiseen tietueeseen, seuraava tapahtumasarja tapahtuu lomakkeessa:
Nykyinen (lomake) BeforeUpdate (lomake) AfterUpdate (lomake) Current (lomake)
Kun poistut tietueesta, jonka tietoja on muutettu, mutta ennen kuin siirryt seuraavaan tietueeseen, Exit- ja LostFocus- tapahtumat tapahtuvat ohjausobjektille, jossa kohdistus on. Nämä tapahtumat tapahtuvat BeforeUpdate- ja AfterUpdate-tapahtumia lomakkeessa seuraavasti:
BeforeUpdate (lomake) AfterUpdate (lomake) Exit (ohjausobjekti) LostFocus (ohjausobjekti) Current (lomake)
Kun siirrät kohdistuksen lomakkeen eri ohjausobjekteihin, kunkin ohjausobjektin kohdalla tapahtuu tapahtumia. Esimerkiksi seuraava tapahtumasarja tapahtuu, kun teet jonkin seuraavista:
-
Avaat lomakkeen ja muutat ohjausobjektin tietoja:
Nykyinen (lomake) Enter (ohjausobjekti) GotFocus (ohjausobjekti) BeforeUpdate (ohjausobjekti) AfterUpdate (ohjausobjekti)
-
Siirrät kohdistuksen toiseen ohjausobjektiin:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Siirrät kohdistuksen toiseen tietueeseen:
BeforeUpdate (lomake) AfterUpdate (lomake) Exit (control2) LostFocus (control2) Current (lomake)
Tietueiden poistaminen
Kun poistat tietueen, seuraavat asiat tapahtuvat lomakkeessa ja Microsoft Office Accessissa näkyy valintaikkuna, jossa pyydetään vahvistamaan poisto:
Poista Ennen KuinDelConfirm DelConfirm
Jos peruutat Delete-tapahtuman, BeforeDelConfirm- ja AfterDelConfirm-tapahtumat eivät tapahdu eikä valintaikkunaa näytetä.
Uuden tietueen luominen
Kun siirrät kohdistuksen uuteen (tyhjään) tietueeseen lomakkeessa ja luot sitten uuden tietueen kirjoittamalla tietoja ohjausobjektiin, seuraava tapahtumasarja tapahtuu:
Nykyinen (lomake) Enter (ohjausobjekti) GotFocus (ohjausobjekti) BeforeInsert (lomake) AfterInsert (lomake)
BeforeInsert (lomake) -tapahtuma käynnistyy heti, kun alat kirjoittaa ohjausobjektiin. AfterInsert (lomake) -tapahtuma käynnistyy tietueesta poistumisen jälkeen.
BeforeUpdate- ja AfterUpdate-tapahtumat lomakkeen ohjausobjekteissa ja uudelle tietueelle tapahtuvat BeforeInsert- tapahtuman jälkeen ja ennen AfterInsert-tapahtumaa.
Lomakkeiden ja alilomakkeiden tapahtumien järjestys
Tapahtumia tapahtuu lomakkeille, kun avaat tai suljet lomakkeen, siirryt lomakkeiden välillä tai työskentelet lomakkeella tai alilomakkeella olevien tietojen parissa.
Lomakkeen avaaminen ja sulkeminen
Kun avaat lomakkeen, lomakkeessa tapahtuu seuraava tapahtumasarja:
Avaa Load Resize Activate Current
Jos lomakkeessa ei ole aktiivisia ohjausobjekteja, GotFocus-tapahtuma tapahtuu lomakkeessa Activate-tapahtuman jälkeen, mutta ennen Current-tapahtumaa.
Kun suljet lomakkeen, lomakkeessa tapahtuu seuraava tapahtumasarja:
Poista poista aktivointi Sulje
Jos lomakkeessa ei ole aktiivisia ohjausobjekteja, LostFocus-tapahtuma tapahtuu lomakkeessa Unload-tapahtuman jälkeen, mutta ennen Deactivate-tapahtumaa.
Siirtyminen lomakkeiden välillä
Kun vaihdat kahden avoimen lomakkeen välillä, Deactivate-tapahtuma tapahtuu ensimmäisessä lomakkeessa, ja Activate-tapahtuma tapahtuu toisessa lomakkeessa:
Aktivoinnin poistaminen (lomake1) Activate (lomake2)
Deactivate-tapahtuma tapahtuu lomakkeessa myös, kun vaihdat lomakkeesta toiseen ohjausobjektivälilehteen Accessissa. Deactivate-tapahtumaa ei kuitenkaan tapahdu, kun vaihdat valintaikkunaan, lomakkeeseen, jonka PopUp-ominaisuus on asetettu tilaan Yes, tai johonkin ikkunaan toisessa ohjelmassa.
Huomautus: Open-tapahtumaa ei tapahdu, jos siirrät kohdistuksen lomakkeeseen, joka on jo auki, vaikka olisitkin siirtänyt kohdistuksen kyseiseen lomakkeeseen tekemällä OpenForm-toiminnon.
Lomakkeen tietojen käsitteleminen
Lomake- ja ohjausobjektitapahtumia tapahtuu, kun siirryt tietueiden välillä lomakkeessa ja muutat tietoja. Kun esimerkiksi avaat lomakkeen ensi kertaa, tapahtuu seuraava tapahtumasarja:
Avaa (lomake) Lataa (lomake) Muuta kokoa (lomake) Activate (lomake) Current (lomake) Enter (ohjausobjekti)0 GotFocus (ohjausobjekti)
Vastaavasti kun suljet lomakkeen, tapahtuu seuraava tapahtumasarja:
Exit (control) LostFocus (control) Pura (lomake) Deactivate (lomake) Sulje (lomake)
Jos olet muuttanut ohjausobjektin tietoja, BeforeUpdate- ja AfterUpdate-tapahtumat sekä lomakkeessa että ohjausobjektissa tapahtuvat ennen ohjausobjektin Exit-tapahtumaa.
Alilomakkeiden käyttäminen
Kun avaat alilomakkeen sisältävän lomakkeen, alilomake ja sen tietueet ladataan ennen päälomaketta. Näin ollen alilomakkeen ja sen ohjausobjektien tapahtumat (kuten Open, Current, Enter ja GotFocus) tapahtuvat ennen lomakkeen tapahtumia. Kuitenkin Activate-tapahtumaa ei tapahdu alilomakkeissa. Näin ollen päälomakkeen avaaminen käynnistää Activate-tapahtuman vain päälomakkeessa.
Samoin kun suljet alilomakkeen sisältävän lomakkeen, alilomake ja sen tietueet poistetaan muistista lomakkeen jälkeen. Deactivate -tapahtumaa ei tapahdu alilomakkeissa. Näin ollen päälomakkeen sulkeminen käynnistää Deactivate -tapahtuman vain päälomakkeessa. Ohjausobjektien, lomakkeen ja alilomakkeen tapahtumat tapahtuvat seuraavassa järjestyksessä:
-
Alilomakkeen ohjausobjektien tapahtumat (kuten Exit ja LostFocus)
-
Lomakkeen ohjausobjektien (mukaan lukien alilomakkeen ohjausobjekti) tapahtumat
-
Lomakkeen tapahtumat (kuten Deactivate ja Close)
-
Alilomakkeen tapahtumat
Huomautus: Alilomakkeen tapahtumat tapahtuvat päälomakkeen sulkemisen jälkeen, joten tietyt tapahtumat eivät toteudu, kuten päälomakkeen sulkemisen peruuttaminen alilomakkeen tapahtuman kautta. Tämäntyyppiset kelpoisuustarkistukset on ehkä siirrettävä päälomakkeen tapahtumaan.
Näppäinpainallusten ja hiiren napsautusten tapahtumien järjestys
Näppäimistön tapahtumat tapahtuvat lomakkeissa ja ohjausobjekteissa, kun painat näppäimiä tai lähetät näppäinpainalluksia silloin, kun aktiivisuus on lomakkeessa tai ohjausobjektissa. Hiiren tapahtumat tapahtuvat lomakkeissa, lomakkeen osissa ja lomakkeiden ohjausobjekteissa, kun napsautat hiiren painikkeita, kun hiiriosoitin on lomakkeessa, osassa tai ohjausobjektissa. Hiiren tapahtumat tapahtuvat myös silloin, kun siirrät hiiriosoittimen lomakkeen, osan tai ohjausobjektin ylle.
Näppäimistötapahtumat
Kun painat ja vapautat näppäintä, kun kohdistus on lomakkeen ohjausobjektissa (tai käytät SendKeys-toimintoa tai lauseke näppäinpainalluksen lähettämiseksi), tapahtuu seuraava tapahtumasarja:
KeyDown KeyPress KeyUp
Kun painat ja vapautat näppäimen tai lähetät näppäinpainalluksen ANSI-merkistö, kaikki KeyDown-, KeyPress- ja KeyUp-tapahtumat tapahtuvat. Jos painat ANSI-näppäintä pitkään, KeyDown- ja KeyPress-tapahtumat vuorottelevat toistuvasti (KeyDown, KeyPress, KeyDown, KeyPress jne.), kunnes vapautat näppäimen; sitten KeyUp-tapahtuma tapahtuu.
Jo painat ei-ANSI-näppäintä ja vapautat sen, KeyDown- ja KeyUp-tapahtumat toteutuvat. Jo painat ei-ANSI-näppäintä ja pidät sitä painettuna, KeyDown-tapahtuma toteutuu toistuvasti, kunnes vapautat näppäimen, jolloin KeyUp-tapahtuma toteutuu.
Jos näppäimen painaminen käynnistää toisen tapahtuman ohjausobjektille, kyseinen tapahtuma toteutuu KeyPress-tapahtuman jälkeen, mutta ennen KeyUp-tapahtumaa. Jos esimerkiksi näppäinpainallus muuttaa tekstiä tekstiruudussa, joka käynnistää Change-tapahtuman, tapahtuu seuraava tapahtumasarja:
KeyDown KeyPress Change KeyUp
Jos näppäinpainallus aiheuttaa kohdistuksen siirtymisen yhdestä ohjausobjektista toiseen ohjausobjektiin, KeyDown-tapahtuma tapahtuu ensimmäisessä ohjausobjektissa, kun taas KeyPress- ja KeyUp-tapahtumat tapahtuvat toisessa ohjausobjektissa. Jos esimerkiksi muutat tietoja ohjausobjektissa ja siirryt sitten SARKAIMELLA seuraavaan ohjausobjektiin, seuraavat tapahtumasarjat tapahtuvat:
-
Ensimmäinen ohjausobjekti:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Toinen ohjausobjekti:
Enter GotFocus KeyPress KeyUp
Hiiren tapahtumat
Kun napsautat ja vapautat hiiren painikkeen hiiriosoittimen ollessa lomakkeen ohjausobjektissa, ohjausobjektissa tapahtuu seuraavassa tapahtumasarja:
MouseDown MouseUp Valitse
Jos kohdistus on ohjausobjektissa ja napsautat toista ohjausobjektia kohdistuksen siirtämiseksi tähän toiseen ohjausobjektiin, seuraavat tapahtumasarjat tapahtuvat:
-
Ensimmäinen ohjausobjekti:
Exit LostFocus
-
Toinen ohjausobjekti:
Enter GotFocus MouseDown MouseUp Click
Jos siirryt toiseen tietueeseen ja napsautat sitten ohjainta, lomakkeen Current-tapahtuma tapahtuu ennen ohjausobjektin Enter-tapahtumaa.
Ohjausobjektin kaksoisnapsauttaminen aiheuttaa sekä Click- että DblClick-tapahtumien tapahtumisen. Kun esimerkiksi kaksoisnapsautat ohjausobjektia, joka ei ole komentopainike, ohjausobjektille tapahtuu seuraava tapahtumasarja:
MouseD:n oma MouseUp Click DblClick MouseUp
Kun kaksoisnapsautat komentopainiketta, edellinen tapahtumasarja tapahtuu, jonka jälkeen seuraa toinen Click-tapahtuma.
MouseMove-tapahtuma tapahtuu lomakkeessa, osassa tai ohjausobjektissa, kun siirrät hiiriosoittimen lomakkeen, osan tai ohjausobjektin päälle. Tämä tapahtuma on riippumaton muista hiiren tapahtumista.
Raporttien ja raporttiosien tapahtumien järjestys
Raporttien ja raporttiosien tapahtumat tapahtuvat, kun avaat raportin sen tulostamiseksi tai esikatselemiseksi tai kun suljet raportin.
Raporttien tapahtumat
Kun avaat raportin sen tulostamiseksi tai esikatselemiseksi ja sitten myöhemmin suljet raportin tai siirryt toiseen ohjausobjektivälilehteen Accessissa, seuraava tapahtumasarja tapahtuu raportissa:
Avaa Activate Close Deactivate
Kun vaihdat kahden avoimen raportin välillä, Deactivate-tapahtuma tapahtuu ensimmäisessä raportissa, ja Activate-tapahtuma tapahtuu toisessa raportissa:
Aktivoinnin poistaminen (raportti1) Activate (raportti2)
Deactivate-tapahtuma tapahtuu raportissa myös, kun vaihdat raportista toiseen ohjausobjektivälilehteen Accessissa. Deactivate-tapahtumaa ei kuitenkaan tapahdu, kun vaihdat valintaikkunaan, lomakkeeseen, jonka PopUp-ominaisuus on asetettu tilaan Yes, tai johonkin ikkunaan toisessa ohjelmassa.
Kun avaat raportin, joka perustuu kyselyn, Access käynnistää Open-tapahtuman raportille ennen kyselyn suorittamista. Tällöin voit määrittää raportin ehdot käyttämällä makroa tai toimintosarjan, joka reagoi Open-tapahtumaan. Makro tai toimintosarja voi esimerkiksi avata mukautetun valintaikkunan, johon voit kirjoittaa raportin ehtoja.
Raporttiosien tapahtumat
Kun tulostat tai esikatselet raporttia, Format- ja Print-tapahtumat tapahtuvat raporttiosissa raportin Open- ja Activate-tapahtumien jälkeen ja ennen raportin Close- tai Deactivate-tapahtumia:
Avaa (raportti) Activate (raportti) Format (raporttiosa) Tulosta (raporttiosa) Sulje (raportti) Deactivate (raportti)
Tietoturva Raporttinäkymän avulla voit ottaa käyttöön käyttäjien raporttien suodatuksen. Toisin kuin tulostuksen esikatselussa, minkä tahansa osan Muotoile - ja Tulosta-tapahtumat eivät näy raporttinäkymässä. Tämä koskee myös VBA-funktion tuloksia ja käyttäjän määrittämiä menetelmiä, jotka näkyvät ohjausobjekteissa (kuten otsikkotekstitys, näytön tila, ehdollinen muotoilu, ohjausobjektien koon muuttaminen jne.) näissä tapahtumissa. Älä siis käytä tässä tapahtumassa koodia luottamuksellisten tietojen muotoilemiseen, piilottamiseen tai tulostamiseen, mikä saattaa paljastua. Suosittelemme tietojen esisuodatusta tai raportin esikatselun poistamista käytöstä määrittämällä SalliRaporttinäkymä-ominaisuuden arvoksi Ei.
Lisäksi seuraavat tapahtumat voivat tapahtua muotoilun aikana tai sen jälkeen, mutta ennen Print-tapahtumaa:
-
Retreat-tapahtuma tapahtuu, kun Access palaa edelliseen osaan raportin muotoilun aikana.
-
NoData-tapahtuma tapahtuu, jos raportissa ei ole tietueita.
-
Page-tapahtuma tapahtuu muotoilun jälkeen, mutta ennen tulostamista. Voit mukauttaa tulostetun raportin ulkoasua tämän tapahtuman avulla.