En enkelt handling, f.eks. at flytte fra én kontrolelement på et objekt til et andet kontrolelement, kan udløse flere forskellige hændelser, der forekommer i en bestemt sekvens. Det er vigtigt at vide, hvornår hændelser indtræffer, og i hvilken rækkefølge de forekommer, fordi det kan påvirke, hvordan og hvornår dine makroer eller hændelsesprocedurer køres. Hvis der f.eks. er to hændelsesprocedurer, der skal køres i en bestemt rækkefølge, skal du sikre dig, at de hændelser, de er knyttet til, sker i samme rækkefølge.
Denne artikel indeholder
Rækkefølge af hændelser for kontrolelementer i formularer
Hændelser sker for kontrolelementer i formularer, når du flytter fokus til et kontrolelement, og når du ændrer og opdaterer data i et kontrolelement.
Bemærk!: Microsoft Office Access viser hændelsesnavne en anelse forskelligt i Visual Basic Editor, end det gør i egenskabsarket og Makrogenerator. For eksempel er den hændelse, der kaldes VedFikFokus i formularens egenskabsark og i makrogeneratoren, FikFokus i Visual Basic Editor. Eksemplerne i denne artikel bruger VBA-formatet (Visual Basic for Applications) til hændelsesnavne.
Flytning af fokus til et kontrolelement
Når du flytter fokus til et kontrolelement i en formular (f.eks. ved at åbne en formular, der indeholder én eller flere aktive kontrolelementer, eller ved at flytte fokus til et andet kontrolelement i samme formular), sker hændelserne Enter og FikFokus i følgende rækkefølge:
Angiv FikFokus
Når du åbner en formular, udføres hændelserne Enter og FikFokus efter de hændelser, der er knyttet til åbning af formularen (f.eks. Åbn, Aktivér og Aktuel), på følgende måde:
Åbn (formular) Aktivér (formular) Aktuel (formular) Enter (kontrolelement) FikFokus (kontrolelement)
Når fokus fjernes fra et kontrolelement i en formular (f.eks. når du lukker en formular, der indeholder én eller flere aktive kontrolelementer, eller når du flytter til et andet kontrolelement i samme formular), sker hændelserne Afslut og FokusVæk i følgende rækkefølge:
Afslut Fokusvæk
Når du lukker en formular, sker hændelserne Afslut og FokusVæk, før de hændelser, der er knyttet til lukning af formularen (f.eks. Fjern, Deaktiver og Luk) på følgende måde:
Afslut (kontrolelement) Fokusvæk (kontrolelement) Fjern (formular) Deaktiver (formular) Luk (formular)
Ændring og opdatering af data i et kontrolelement
Når du indtaster eller ændrer data i et kontrolelement i en formular og derefter flytter fokus til et andet kontrolelement, sker hændelserne FørOpdatering og EfterOpdatering:
BeforeUpdate Afte rUpdate
Hændelserne Afslut og FokusVæk for et kontrolelement, hvis værdiændringer sker efter hændelserne FørOpdatering og EfterOpdatering:
FørOpdatering EfterOpdatering Afslut Fokusvæk
Når du ændrer teksten i et tekstfelt eller i tekstfeltdelen af et kombinationsfelt, sker hændelsen Skift. Denne hændelse sker, hver gang indholdet af kontrolelementet ændres, men før du flytter fokus til et andet kontrolelement eller en anden post (og derfor før hændelserne FørOpdatering og EfterOpdatering udføres). Følgende rækkefølge af hændelser sker for hver tast, du trykker på i et tekstfelt eller i tekstfeltdelen af en kombinationsfelt:
Tastetryk #x2 tastned snavset skift tast
Hændelsen IkkePåListe sker efter, at du har indtastet en værdi i et kombinationsfelt, der ikke findes på listen i kombinationsfeltet, og så prøver at flytte fokus til et andet kontrolelement eller en anden post. Hændelsen IkkePåListe udføres efter tastaturhændelserne og Skift-hændelserne for kombinationsfeltet, men før hændelserne for noget andet kontrolelement eller nogen anden formular. Hvis egenskaben BegrænsTilListe for kombinationsfeltet er indstillet til Ja, udføres hændelsen Fejl umiddelbart efter hændelsen IkkePåListe:
KeyDown KeyPress Dirty Change KeyUp NotInList 0 error
Rækkefølge af hændelser for poster i formularer
Hændelser sker for poster i formularer, når du flytter fokus til en anden post, opdaterer data i en post, sletter en eksisterende post eller eksisterende poster eller opretter en ny post.
Flytning af fokus til poster og opdatering af data i poster
Når du flytter fokus til en eksisterende post i en formular, indtaster eller ændrer data i posten og derefter flytter fokus til en anden post, udføres følgende rækkefølge af hændelser for formularen:
Aktuel (formular) FørOpdatering (formular) EfterOpdatering (formular) Aktuel (formular)
Når du forlader den post, hvis data blev ændret, men før du skifter til næste post, udføres hændelserne Afslut og FokusVæk for det kontrolelement, der er i fokus. Disse hændelser sker efter hændelserne FørOpdatering og EfterOpdatering for formularen på følgende måde:
FørOpdatering (formular) EfterOpdatering (formular) Afslut (kontrolelement) Fokusvæk (kontrolelement) Aktuel (formular)
Når du flytter fokus mellem kontrolelementerne i en formular, udføres hændelser for hvert kontrolelement. For eksempel udføres følgende rækkefølger af hændelser, når du gør følgende:
-
Åbner en formular og ændrer data i et kontrolelement:
Aktuel (formular) Enter (kontrolelement) FikFokus (kontrolelement) FørOpdatering (kontrolelement) EfterOpdatering (kontrolelement)
-
Flytter fokus til et andet kontrolelement:
Afslut (kontrolelement1) FokusVæk (kontrolelement1) Enter (kontrolelement2) FikFokus (kontrolelement2)
-
Flytter fokus til en anden post:
FørOpdatering (formular) EfterOpdatering (formular) Afslut (kontrolelement2) LostFokus (kontrolelement2) Aktuel (formular)
Sletning af poster
Når du sletter en post, sker følgende hændelser for formularen, og i Microsoft Office Access vises en dialogboks, hvori du bedes om at bekræfte sletningen:
Slet BeforeDelConfirm AfterDelConfirm
Hvis du annullerer hændelsen Slet, udføres hændelserne FørSletning og EfterSletning ikke, og dialogboksen vises ikke.
Oprettelse af en ny post
Når du flytter fokus til en ny (tom) post i en formular og derefter opretter en ny post ved at indtaste data i et kontrolelement, sker følgende hændelsessekvens:
Aktuel (formular) Enter (kontrolelement) FikFokus (kontrolelement) FørIndsættelse (formular) EfterIndsættelse (formular)
Hændelsen FørIndsættelse (formular) udløses, så snart du begynder at skrive i kontrolelementet. Hændelsen EfterIndsættelse (formular) udløses, når du har forladt posten.
Hændelserne for FørOpdatering og EfterOpdatering for kontrolelementerne i formularen og for den nye post udføres efter hændelsen FørIndsættelse og før hændelsen EfterIndsættelse.
Rækkefølge af hændelser for formularer og underformularer
Hændelser udføres i formularer, når du åbner eller lukker en formular, flytter mellem formularer eller arbejder med data i en formular eller underformular.
Åbning og lukning af en formular
Når du åbner en formular, udføres følgende hændelsessekvens for formularen:
Åbn Indlæs Tilpas størrelse Aktivér aktuel
Hvis der ikke er nogen aktive kontrolelementer i formularen, udføres hændelsen FikFokus for formularen efter hændelsen Aktivér, men før hændelsen Aktuel.
Når du lukker en formular, udføres følgende hændelsessekvens for formularen:
Fjern Deaktiver Luk
Hvis der ikke er nogen aktive kontrolelementer i formularen, udføres hændelsen FokusTabt for formularen efter hændelsen Fjern, men før hændelsen Deaktiver.
Skift mellem formularer
Når du skifter mellem to åbne formularer, udføres hændelsen Deaktiver for den første formular, og hændelsen Aktivér for den anden formular:
Deaktiver (formular1) Aktivér (formular2)
Hændelsen Deaktiver for en formular sker også, når du skifter fra formularen til en anden objektfane i Access. Dog udføres hændelsen Deaktiver ikke, når du skifter til en dialogboks, til en formular, hvis egenskab PopOp er indstillet til Ja, eller til et vindue i et andet program.
Bemærk!: Hændelsen Åbn udføres ikke, hvis du flytter fokus til en formular, der allerede er åben, selv hvis du har flyttet fokus til den pågældende formular ved at udføre handlingen ÅbnFormular.
Arbejde med data i en formular
Formular- og kontrolelementbaserede hændelser, mens du flytter mellem poster i formularen og ændrer data. For eksempel, når du åbner en formular første gang, udføres følgende hændelsessekvens for formularen:
Åbn (formular) Indlæs (formular) Tilpas størrelse (formular) Aktivér (formular) Aktuel (formular) Enter (kontrolelement)0 FikFokus (kontrolelement)
På samme måde udføres følgende sekvens af hændelser, når du lukker en formular:
Afslut (kontrolelement) LostFocus (kontrolelement) Fjern (formular) Deaktiver (formular) Luk (formular)
Hvis du har ændret data i et kontrolelement, udføres hændelserne FørOpdatering og EfterOpdatering for både kontrolelementet og formularen før hændelsen Afslut for kontrolelementet.
Arbejde med underformularer
Når du åbner en formular, der indeholder en underformular, indlæses underformularen og dens poster før hovedformularen. Hændelserne for underformularen og dens kontrolelementer (f.eks. Åbn, Aktuel, Enter og FikFokus) udføres således før hændelserne for formularen. Hændelsen Aktivér udføres dog ikke for underformularer. Derfor udløser åbning af en hovedformular kun en Aktivér-hændelse for hovedformularen.
På samme måder gælder, at når du lukker en formular, der indeholder en underformular, fjernes underformularen og dens poster efter formularen. Hændelsen Deaktiver udføres ikke for underformularer. Derfor udløser lukning af en hovedformular kun en Deaktiver-hændelse for hovedformularen. Hændelserne for kontrolelementerne, formularen og underformularen sker i følgende rækkefølge:
-
Hændelser for underformularens kontrolelementer (f.eks. Afslut og FokusVæk)
-
Hændelser for formularens kontrolelementer (herunder underformularkontrolelementet)
-
Hændelser for formularen (f.eks. Deaktiver og Luk)
-
Hændelser for underformularen
Bemærk!: Da hændelserne for en underformular sker, når hovedformularen er lukket, vil visse hændelser, f.eks. annullering af lukningen af hovedformularen fra en hændelse i underformularen, ikke forekomme. Det kan være nødvendigt at flytte disse typer valideringstest til en hændelse i hovedformularen.
Rækkefølge af hændelser for tastetryk og museklik
Tastaturhændelser sker for formularer og kontrolelementer, når du trykker på taster eller sender tastetryk, mens formularen eller kontrolelementet har fokus. Musehændelser sker for formularer, formularsektioner og kontrolelementer i formularer, når du klikker på musetasterne, mens musemarkøren er på en formular, en sektion eller et kontrolelement. Musehændelser sker også, når du flytter musemarkøren over en formular, en sektion eller et kontrolelement.
Tastaturhændelser
Når du trykker på og slipper en tast, mens et kontrolelement i en formular er i fokus (eller brug handlingen SendTaster eller erklæring til at sende et tastetryk), udføres følgende hændelsessekvens:
Tasten Ned tastetryk tastOp
Når du trykker på og slipper en tast eller sender et tastetryk i ANSI-tegnsæt, udføres alle hændelserne TastNed, Tastetryk og TastOp . Hvis du trykker på og holder en ANSI-tast nede, skifter hændelserne TastNed og Tastetryk gentagne gange (TastNed, Tastetryk, TastNed, Tastetryk osv.), indtil du slipper tasten. udføres hændelsen TastOp .
Hvis du trykker på og slipper en tast, der ikke er en ANSI-tast, udføres hændelserne TastNed og TastOp. Hvis du trykker på holder en tast, der ikke er en ANSI-tast, nede, udføres hændelsen TastNed kontinuerligt, indtil du slipper taster, hvorefter hændelsen TastOp udføres.
Hvis et tryk på en tast udløser en anden hændelse for et kontrolelement, udføres den pågældende hændelse efter hændelsen Tastetryk , men før hændelsen TastOp . Hvis et tastetryk f.eks. ændrer tekst i et tekstfelt, som udløser en Ændring-hændelse , udføres følgende hændelsessekvens:
KeyDown Tastetryk Skift -tast
Hvis et tastetryk får fokus til at flytte fra ét kontrolelement til et andet kontrolelement, udføres hændelsen TastNed for det første kontrolelement, mens hændelserne Tastetryk og TastOp udføres for det andet kontrolelement. Hvis du f.eks. ændrer data i et kontrolelement og derefter trykker på Tab for at gå til det næste kontrolelement, udføres følgende hændelsessekvenser:
-
Første kontrolelement:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Andet kontrolelement:
Enter GotFocus KeyPress KeyUp
Musehændelser
Når du klikker på og slipper en museknap, mens musemarkøren er på et kontrolelement i en formular, udføres følgende sekvens af hændelser for kontrolelementet:
MouseDown MouseUp Klik
Hvis et kontrolelement er i fokus, og du klikker på et andet kontrolelement for at flytte fokus til dette andet kontrolelement, udføres følgende hændelsessekvens:
-
Første kontrolelement:
Afslut Fokusvæk
-
Andet kontrolelement:
Enter GotFocus MouseDown MouseUp Klik
Hvis du flytter til en anden post og derefter klikker på et kontrolelement, udføres hændelsen Aktuel også for formularen før hændelsen Enter for kontrolelementet.
Hvis du dobbeltklikker på et kontrolelement, udføres både klik - og DblClick-hændelserne . Når du f.eks. dobbeltklikker på et andet kontrolelement end en kommandoknap, udføres følgende hændelsessekvens for kontrolelementet:
MouseD ejer MouseUp Klik DblKlik MouseUp
Når du dobbeltklikker på en kommandoknap, udføres den forrige rækkefølge af hændelser efterfulgt af en anden Klik-hændelse.
Hændelsen MusFlyttet for en formular, en sektion eller et kontrolelement udføres, når du flytter musemarkøren over formularen, sektionen eller kontrolelementet. Denne hændelse er uafhængig af de andre musehændelser.
Rækkefølgen af hændelser for rapporter og rapportsektioner
Hændelser, der sker for rapporter og rapportsektioner, når du åbner en rapport for at udskrive eller vise udskrift af den eller lukke en rapport.
Hændelser for rapporter
Når du åbner en rapport for at udskrive den eller vise udskrift for den og så senere lukker rapporten eller flytter til en anden objektfane i Access, udføres følgende hændelsessekvens for rapporten:
Åbn Aktivér Luk Deaktiver
Når du skifter mellem to åbne rapporter, udføres hændelsen Deaktiver for den første rapport, og hændelsen Aktivér for den anden rapport:
Deaktiver (rapport1) Aktivér (rapport2)
Hændelsen Deaktiver for en rapport udføres også, når du skifter fra rapporten til en anden objektfane i Access. Dog udføres hændelsen Deaktiver ikke, når du skifter til en dialogboks, til en formular, hvis egenskab PopOp er indstillet til Ja, eller til et vindue i et andet program.
Når du åbner en rapport, der er baseret på en forespørgsel, udløser Access hændelsen Åbn for rapporten, før den kører den underliggende forespørgsel. Derfor kan du angive kriterierne for rapporten ved hjælp af en makro eller hændelsesprocedure, der reagerer på hændelsen Åbn . Makroen eller hændelsesproceduren kan f.eks. åbne en brugerdefineret dialogboks, hvor du kan angive rapportkriterier.
Hændelser for rapportsektioner
Når du udskriver eller får vist udskrift for en rapport, udføres hændelserne Formatér og Udskriv for rapportsektionerne efter hændelserne Åbn og Aktivér for rapporten og før rapportens hændelser Luk eller Deaktiver:
Åbn (rapport) Aktivér (rapport) Formatér (rapportsektion) Udskriv (rapportsektion) Luk (rapport) Deaktiver (rapport)
Sikkerhed Du kan bruge Rapportvisning til at aktivere brugerfiltrering af rapporter. Men i modsætning til Vis udskrift sker hændelserne Formatér og Udskriv ikke i rapportvisning. Dette gælder også for VBA-funktionsresultater og brugerdefinerede procedurer, der vises i kontrolelementer (f.eks. navnetekster, visningsstatus, betinget formatering, tilpasning af størrelsen på kontrolelementer osv.) inden for disse hændelser. Brug derfor ikke kode i denne hændelse til at formatere, skjule eller udskrive fortrolige data, som kan blive vist. Vi anbefaler, at du filtrerer dataene på forhånd eller deaktiverer Rapportvisning ved at angive egenskaben AllowReportView til Nej.
Desuden kan følgende hændelser forekomme under eller efter formatering, men før hændelsen Udskriv:
-
Hændelsen Tilbagerykning udføres, når Access returnerer til en tidligere sektion under rapportformatering.
-
Hændelsen IngenData udføres, hvis der ikke vises nogen poster i rapporten.
-
Hændelsen Side udføres efter formatering, men før udskrivning. Du kan bruge denne hændelse til at tilpasse udseendet af den udskrevne rapport.