Applies ToAccess dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jedna akcja, taka jak przejście z jednego elementu typu kontrolka w obiekcie do innej kontrolki, może wyzwolić kilka innych zdarzeń występujących w określonej kolejności. Ważna jest znajomość czasu i kolejności występowania zdarzeń, ponieważ może to wpłynąć na sposób i czas uruchamiania makr, a nawet procedur zdarzeń. Jeśli na przykład dwie procedury zdarzeń mają zostać uruchomione w określonej kolejności, skojarzone z nimi zdarzenia muszą wystąpić w takiej samej kolejności.

W tym artykule

Kolejność zdarzeń kontrolek w formularzach

Zdarzenia kontrolek w formularzach występują w przypadku przeniesienia fokusu do kontrolki oraz zmiany i zaktualizowania danych w kontrolce.

Uwaga: W programie Microsoft Office Access nazwy zdarzeń są wyświetlane nieco inaczej w Edytorze Visual Basic niż w arkuszu właściwości i Konstruktorze makr. Na przykład zdarzenie, które w arkuszu właściwości formularza i Konstruktorze makr ma nazwę Przy uzyskaniu fokusu, w Edytorze Visual Basic nosi nazwę GotFocus. W przykładach w tym artykule użyto nazw zdarzeń w formacie języka Visual Basic for Applications (VBA).

Przenoszenie fokusu do kontrolki

W przypadku przeniesienia fokusu do kontrolki w formularzu (na przykład przez otwarcie formularza zawierającego co najmniej jedną aktywną kontrolkę lub przez przeniesienie fokusu do innej kontrolki w tym samym formularzu) zdarzenia Enter i GotFocus występują w następującej kolejności:

Wprowadź strzałka GotFocus

W przypadku otwarcia formularza zdarzenia Enter i GotFocus występują po zdarzeniach skojarzonych z otwarciem formularza (takich jak Open, Activate i Current) w następujące kolejności:

Open (formularz) strzałkaActivate (formularz) strzałkaCurrent (formularz) strzałkaEnter (kontrolka) strzałkaGotFocus (kontrolka)

W przypadku przeniesienia fokusu poza kontrolkę w formularzu (na przykład przez zamknięcie formularza zawierającego co najmniej jedną aktywną kontrolkę lub przejście do innej kontrolki w tym samym formularzu) zdarzenia Exit i LostFocus występują w następującej kolejności:

Zamknij strzałka LostFocus

W przypadku zamknięcia formularza zdarzenia Exit i LostFocus występują przed zdarzeniami skojarzonymi z zamknięciem formularza (takimi jak Unload, Deactivate i Close) w następującej kolejności:

Exit (kontrolka) strzałkaLostFocus (kontrolka) strzałkaUnload (formularz) strzałkaDeactivate (formularz) strzałkaClose (formularz)

Zmienianie i aktualizowanie danych w kontrolce

W przypadku wprowadzenia lub zmiany danych w kontrolce w formularzu, a następnie przeniesienia fokusu do innej kontrolki występują zdarzenia BeforeUpdate i AfterUpdate:

BeforeUpdate strzałka Afte rUpdate

Zdarzenia Exit i LostFocus kontrolki, której wartość jest zmieniana, występują po zdarzeniach BeforeUpdate i AfterUpdate:

BeforeUpdate strzałka AfterUpdate strzałka Exit strzałka LostFocus

W przypadku zmiany tekstu w polu tekstowym lub w sekcji pola tekstowego w polu kombi występuje zdarzenie Change. To zdarzenie występuje po każdej zmianie zawartości kontrolki, ale przed przeniesieniem fokusu do innej kontrolki lub innego rekordu (dlatego występują przed zdarzeniami BeforeUpdate i AfterUpdate). Poniżej przedstawiono sekwencję zdarzeń występujących dla każdego naciśniętego klawisza w polu tekstowym lub w sekcji pola tekstowego w polu kombi:

KeyDown strzałka KeyPress strzałka Dirty strzałka Change strzałka KeyUp

Zdarzenie NotInList występuje po wprowadzeniu wartości w polu kombi, którego nie ma na liście pól kombi, i próbie przeniesienia fokusu do innej kontrolki lub innego rekordu. Zdarzenie NotInList występuje po zdarzeniach klawiatury i zdarzeniach Change pola kombi, ale przed zdarzeniami innej kontrolki lub innego formularza. Jeśli dla właściwości LimitToList pola kombi ustawiono wartość Tak, zdarzenie Error formularza występuje bezpośrednio po zdarzeniu NotInList:

KeyDown strzałka KeyPress strzałka Dirty strzałka Change strzałka KeyUp strzałka NotInList 0 Error

Początek strony

Kolejność zdarzeń rekordów w formularzach

Zdarzenia rekordów w formularzach występują w przypadku przeniesienia fokusu do innego rekordu, zaktualizowania danych w rekordzie, usunięcia istniejącego rekordu lub utworzenia nowego rekordu.

Przenoszenie fokusu do rekordów i aktualizowanie danych w rekordach

W przypadku przeniesienia fokusu do istniejącego rekordu formularza, wprowadzenia lub zmiany danych w rekordzie, a następnie przeniesienia fokusu do innego rekordu w formularzu występuje następującą sekwencja zdarzeń:

Current (formularz) strzałkaBeforeUpdate (formularz) strzałkaAfterUpdate (formularz) strzałkaCurrent (formularz)

W przypadku opuszczenia rekordu, którego dane zostały zmienione, przed wprowadzeniem następnego rekordu występują zdarzenia Exit i LostFocus dla kontrolki z fokusem. Te zdarzenia występują po zdarzeniach BeforeUpdate i AfterUpdate formularza w następującej kolejności:

BeforeUpdate (formularz) strzałkaAfterUpdate (formularz) strzałkaExit (kontrolka) strzałkaLostFocus (kontrolka) strzałkaCurrent (formularz)

Przenoszenie fokusu między kontrolkami w formularzu powoduje występowanie zdarzeń dla poszczególnych kontrolek. Na przykład poniższa sekwencja zdarzeń występuje w przypadku wykonania następujących działań:

  • Otwarcie formularza i zmiana danych w kontrolce:

    Current (formularz) strzałkaEnter (kontrolka) strzałkaGotFocus (kontrolka ) strzałkaBeforeUpdate (kontrolka) strzałkaAfterUpdate (kontrolka)

  • Przeniesienie fokusu do innej kontrolki:

    Exit (kontrolka1) strzałkaLostFocus (kontrolka1) strzałkaEnter (kontrolka 2) strzałkaGotFocus (kontrolka 2)

  • Przeniesienie fokusu do innego rekordu:

    BeforeUpdate (formularz) strzałkaAfterUpdate (formularz) strzałkaExit (kontrolka2) strzałkaLo stFocus (kontrolka2) strzałkaCurrent (formularz)

Usuwanie rekordów

W przypadku usunięcia rekordu występują następujące zdarzenia formularza, a w programie Microsoft Office Access jest wyświetlane okno dialogowe z monitem o potwierdzenie usunięcia:

Usuwanie strzałka BeforeDelConfirm strzałka AfterDelConfirm

Jeśli anulujesz zdarzenie Delete, zdarzenia BeforeDelConfirm oraz AfterDelConfirm nie wystąpią i okno dialogowe nie zostanie wyświetlone.

Tworzenie nowego rekordu

W przypadku przeniesienia fokusu do nowego (pustego) rekordu w formularzu, a następnie utworzenia nowego rekordu przez wpisanie danych w kontrolce występuje następująca sekwencja zdarzeń:

Current (formularz) strzałkaEnter (kontrolka) strzałkaGotFocus (kontrolka ) strzałkaBeforeInsert (formularz) strzałkaAfterInsert (formularz)

Zdarzenie BeforeInsert (formularz) wyzwala się zaraz po rozpoczęciu wpisywania tekstu w kontrolce. Zdarzenie AfterInsert (formularz) wyzwala się po opuszczeniu rekordu.

Zdarzenia BeforeUpdate i AfterUpdate kontrolek formularza oraz nowego rekordu występują po zdarzeniu BeforeInsert i przed zdarzeniem AfterInsert.

Początek strony

Kolejność zdarzeń formularzy i podformularzy

Zdarzenia formularzy występują w przypadku otwarcia i zamknięcia formularza, przejścia między formularzami lub pracy z danymi w formularzu lub podformularzu.

Otwieranie i zamykanie formularza

W przypadku otwarcia formularza występuje następująca sekwencja zdarzeń formularza:

Otwórz strzałka Załaduj strzałka Zmień rozmiar strzałka Aktywuj strzałka Bieżące

Jeśli w formularzu nie ma aktywnych kontrolek, zdarzenie GotFocus formularza występuje po zdarzeniu Activate, ale przed zdarzeniem Current.

W przypadku zamknięcia formularza występuje następująca sekwencja zdarzeń formularza:

Zwalnianie strzałka Dezaktywuj strzałka Zamknij

Jeśli w formularzu nie ma aktywnych kontrolek, zdarzenie LostFocus formularza występuje po zdarzeniu Unload, ale przed zdarzeniem Deactivate.

Przechodzenie między formularzami

W przypadku przełączenia między dwoma otwartymi formularzami występuje zdarzenie Deactivate dla pierwszego formularza i zdarzenie Activate dla drugiego formularza:

Deactivate (formularz1) strzałkaActivate (formularz2)

Zdarzenie Deactivate formularza występuje również w przypadku przełączenia z formularza do innej karty obiektu w programie Access. Jednak zdarzenie Deactivate nie występuje w przypadku przełączenia do okna dialogowego, do formularza z właściwością PopUp z ustawioną wartością Tak lub do okna w innym programie.

Uwaga:  Zdarzenie Open nie występuje w przypadku przeniesienia fokusu do formularza, który jest już otwarty, nawet jeśli przeniesiono fokus do tego formularza przez wykonanie akcji OtwórzFormularz.

Praca z danymi w formularzu

Zdarzenia formularzy i kontrolek występują w przypadku przechodzenia między rekordami w formularzu i zmiany danych. Na przykład w przypadku otwarcia formularza występuje następująca sekwencja zdarzeń:

Open (formularz) strzałkaLoad (formularz) strzałkaResize (formularz) strzałkaActivate (formularz) strzałkaCurrent (formularz) strzałkaEnter (kontrolka)0 GotFocus (kontrolka)

Podobnie w przypadku zamknięcia formularza występuje następująca sekwencja zdarzeń:

Exit (kontrolka) strzałkaLostFocus (kontrolka) strzałkaUnload (formularz) strzałkaDeactivate (formularz) strzałkaClose (formularz)

Jeśli wprowadzono zmiany danych w kontrolce, zdarzenia BeforeUpdate i AfterUpdate występują dla formularza oraz kontrolki przed zdarzeniem Exit kontrolki.

Praca z podformularzami

W przypadku otwarcia formularza zawierającego podformularz ten podformularz i jego rekordy są ładowane przed formularzem głównym. Dlatego zdarzenia podformularza i jego kontrolek (takie jak Open, Current, Enter i GotFocus) występują przed zdarzeniami formularza. Jednak zdarzenie Activate nie występuje dla podformularzy. Dlatego otwarcie formularza głównego powoduje wyzwolenie zdarzenia Activate tylko dla formularza głównego.

Podobnie w przypadku zamknięcia formularza zawierającego podformularz ten podformularz i jego rekordy są zwalniane po formularzu. Zdarzenie Deactivate nie występuje dla podformularzy. Dlatego zamknięcie formularza głównego powoduje wyzwolenie zdarzenia Deactivate tylko dla formularza głównego. Zdarzenia kontrolek, formularza i podformularza występują w następującej kolejności:

  1. Zdarzenia kontrolek podformularza (takie jak Exit i LostFocus)

  2. Zdarzenia kontrolek formularza (w tym kontrolki podformularza)

  3. Zdarzenia formularza (takie jak Deactivate i Close)

  4. Zdarzenia podformularza

Uwaga: Zdarzenia podformularza występują po zamknięciu formularza głównego, dlatego nie wystąpią pewne zdarzenia, takie jak anulowanie zamykania formularza głównego w zdarzeniu w podformularzu. Może być konieczne przeniesienie tego typu testów sprawdzania poprawności do zdarzenia w formularzu głównym.

Początek strony

Kolejność zdarzeń naciśnięć klawiszy i kliknięć myszą

Zdarzenia klawiatury występują dla formularzy i kontrolek w przypadku naciskania klawiszy lub wysyłania naciśnięć klawiszy, gdy formularz lub kontrolka ma fokus. Zdarzenia myszy występują w formularzach, sekcjach formularzy i kontrolkach w formularzach w przypadku klikania przycisków myszy, gdy wskaźnik myszy znajduje się w formularzu, sekcji lub kontrolce. Zdarzenia myszy występują także po umieszczeniu wskaźnika myszy na formularzu, sekcji lub kontrolce.

Zdarzenia klawiatury

W przypadku naciśnięcia i zwolnienia klawisza, gdy fokus jest w kontrolce w formularzu, (lub wysłania naciśnięcia klawisza przy użyciu elementu typu instrukcja lub akcji WyślijKlawisze) występuje następująca sekwencja zdarzeń:

KeyDown strzałka KeyPress strzałka KeyUp

Po naciśnięciu i zwolnieniu klawisza lub wysłaniu naciśnięcia klawisza w zestaw znaków ANSI występują zdarzenia KeyDown, KeyPress i KeyUp . Jeśli naciśniesz i przytrzymasz klawisz ANSI, zdarzenia KeyDown i KeyPress wielokrotnie na przemian (KeyDown, KeyPress, KeyDown, KeyPress itd.) do momentu zwolnienia klawisza; wtedy występuje zdarzenie KeyUp .

W przypadku naciśnięcia i zwolnienia klawisza innego niż ANSI występują zdarzenia KeyDown i KeyUp. W przypadku naciśnięcia i przytrzymania klawisza innego niż ANSI wielokrotnie występuje zdarzenie KeyDown do czasu zwolnienia klawisza — wtedy występuje zdarzenie KeyUp.

Jeśli naciśnięcie klawisza powoduje wyzwolenie innego zdarzenia kontrolki, to zdarzenie występuje po zdarzeniu KeyPress, ale przed zdarzeniem KeyUp. Jeśli na przykład naciśnięcie klawisza powoduje zmianę tekstu w polu tekstowym, co powoduje wyzwolenie zdarzenia Change, występuje następująca sekwencja zdarzeń:

KeyDown strzałka KeyPress strzałka Change strzałka KeyUp

Jeśli naciśnięcie klawisza powoduje przeniesienie fokusu do innej kontrolki, występuje zdarzenie KeyDown dla pierwszej kontrolki, natomiast dla drugiej kontrolki występują zdarzenia KeyPress i KeyUp. Jeśli na przykład zmienisz dane w kontrolce, a następnie naciśniesz klawisz TAB w celu przejścia do następnej kontrolki, wystąpią następujące sekwencje zdarzeń:

  • Pierwsza kontrolka:

    KeyDown strzałka BeforeUpdate strzałka AfterUpdate strzałka Exit strzałka LostFocus

  • Druga kontrolka:

    Wprowadź strzałka GotFocus strzałka KeyPress strzałka KeyUp

Zdarzenia myszy

W przypadku kliknięcia i zwolnienia przycisku myszy, gdy wskaźnik myszy znajduje się na kontrolce w formularzu, występuje następująca sekwencja zdarzeń kontrolki:

MouseDown strzałka MouseUp strzałka Click

Jeśli fokus jest ustawiony w kontrolce i klikniesz inną kontrolkę w celu przeniesienia do niej fokusu, wystąpią następujące sekwencje zdarzeń:

  • Pierwsza kontrolka:

    Zamknij strzałka LostFocus

  • Druga kontrolka:

    Wprowadź strzałka GotFocus strzałka MouseDown strzałka MouseUp strzałka Click

Jeśli przejdziesz do innego rekordu, a następnie klikniesz kontrolkę, wystąpi też zdarzenie Current formularza przed zdarzeniem Enter kontrolki.

Dwukrotne kliknięcie kontrolki powoduje wystąpienie zdarzeń Click i DblClick. Na przykład dwukrotne kliknięcie kontrolki innej niż przycisk polecenia powoduje wystąpienie następującej sekwencji zdarzeń kontrolki:

MouseD własne strzałka MouseUp strzałka Click strzałka DblClick strzałka MouseUp

W przypadku dwukrotnego kliknięcia przycisku polecenia występuje powyższa sekwencja zdarzeń, po której występuje drugie zdarzenie Click.

Zdarzenie MouseMove formularza, sekcji lub kontrolki występuje w przypadku umieszczenia wskaźnika myszy na formularzu, sekcji lub kontrolce. To zdarzenie nie zależy od innych zdarzeń myszy.

Początek strony

Kolejność zdarzeń raportów i sekcji raportów

Zdarzenia raportów i sekcji raportów występują w przypadku otwarcia raportu w celu wydrukowania go lub wyświetlenia jego podglądu albo zamknięcia raportu.

Zdarzenia raportów

W przypadku otwarcia raportu w celu wydrukowania go lub wyświetlenia jego podglądu, a następnie późniejszego zamknięcia raportu lub przejścia do innej karty obiektów w programie Access występuje następująca sekwencja zdarzeń raportu:

Otwórz strzałka Aktywuj strzałka Zamknij strzałka Dezaktywuj

W przypadku przełączenia między dwoma otwartymi raportami występuje zdarzenie Deactivate dla pierwszego raportu i zdarzenie Activate dla drugiego raportu:

Deactivate (raport1) strzałkaActivate (raport2)

Zdarzenie Deactivate raportu występuje również w przypadku przełączenia z raportu do innej karty obiektu w programie Access. Jednak zdarzenie Deactivate nie występuje w przypadku przełączenia do okna dialogowego, do formularza z właściwością PopUp z ustawioną wartością Tak lub do okna w innym programie.

W przypadku otwarcia raportu opartego na zapytaniu program Access wyzwala zdarzenie Open raportu przed uruchomieniem zapytania. W wyniku tego można ustawić kryteria raportu przy użyciu makra lub procedury zdarzenia odpowiadającej na zdarzenie Open. Na przykład makro lub procedura zdarzenia umożliwia otwarcie niestandardowego okna dialogowego, w którym można wprowadzić kryteria raportu.

Zdarzenia sekcji raportów

W przypadku drukowania raportu lub wyświetlania jego podglądu występują zdarzenia Format i Print sekcji raportu po zdarzeniach Open i Activate raportu oraz przed zdarzeniami Close i Deactivate raportu:

Open (raport) strzałkaActivate (raport) strzałkaFormat (sekcja raportu) strzałkaPrint (sekcja raportu) strzałkaClose (raport) strzałkaDeactivate (raport)

Zabezpieczenia    Widok raportu umożliwia filtrowanie raportów przez użytkowników. Jednak w przeciwieństwie do podglądu wydruku zdarzenia Formatuj i Drukuj w żadnej sekcji nie występują w widoku raportu. Dotyczy to również wyników funkcji języka VBA oraz procedur zdefiniowanych przez użytkownika, które są wyświetlane w kontrolkach (takich jak podpisy etykiet, stan wyświetlania, formatowanie warunkowe, zmiana rozmiaru kontrolek itd.) w tych zdarzeniach. Dlatego nie używaj kodu w tym zdarzeniu do formatowania, ukrywania lub drukowania poufnych danych, które mogą zostać ujawnione. Zalecamy wstępne filtrowanie danych lub wyłączanie podglądu raportu, ustawiając właściwość AllowReportView na No (Nie).

Ponadto mogą wystąpić następujące zdarzenia podczas formatowania lub po jego zakończeniu, ale przed zdarzeniem Print:

  • Zdarzenie Retreat występuje w przypadku powrotu programu Access do poprzedniej sekcji podczas formatowania raportu.

  • Zdarzenie NoData występuje w przypadku braku rekordów wyświetlanych w raporcie.

  • Zdarzenie Page występuje po zakończeniu formatowania, ale przed rozpoczęciem drukowania. Za pomocą tego zdarzenia można dostosować wygląd drukowanego raportu.

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.