Veritabanı nesneleri için olay sırası

Uygulandığı Öğe
Microsoft 365 için Access Access 2024 Access 2021 Access 2019 Access 2016

Bir nesnedeki bir denetimden başka bir denetime geçmek gibi tek bir eylem, belirli bir sırada gerçekleşen birkaç farklı olayı tetikleyebilir. Olayların ne zaman ve hangi sırayla gerçekleştiğini bilmek önemlidir, çünkü bu makrolarınızın ve olay yordamlarınızın nasıl ve ne zaman çalıştırılacağını etkileyebilir. Örneğin, belirli bir sırada çalıştırılması gereken iki olay yordamı varsa, bunların ilişkilendirildiği olayların aynı sırada gerçekleştiğinden emin olmak istersiniz.

Bu makalede

Formlardaki denetimler için olayların sırası

Olaylar, odağı denetime taşıdığınızda ve denetimdeki verileri değiştirip güncelleştirdiğinizde formlardaki denetimler için gerçekleşir.

Not

Microsoft Office Access, Visual Basic Düzenleyicisi'nde olay adlarını özellik sayfasında ve Makro Oluşturucusu'nda gösterdiğinden biraz farklı gösterir. Örneğin, formun özellik sayfasında ve Makro Oluşturucusu'nda Odaklanıldığında adlı olay, Visual Basic Düzenleyicisi'nde GotFocus olarak adlandırılır. Bu makaledeki örneklerde olay adları için Visual Basic for Applications (VBA) biçimi kullanılmıştır.

Odağı bir denetime taşıma

Odağı formdaki bir denetime taşıdığınızda (örneğin, bir veya birden çok etkin denetim içeren bir formu açarak veya odağı aynı formda başka bir denetime taşıyarak), Enter ve GotFocus olayları şu sırayla gerçekleşir:

GotFocusok girin

Formu açtığınızda, form açma işlemiyle ilişkilendirilmiş olaylardan (Open, Activate ve Current gibi) sonra Enter ve GotFocus olayları şu şekilde gerçekleşir:

(form) okuEtkinleştir (form) okuGeçerli (form) okEnter (denetim) okuGotFocus (denetim)

Odak formdaki bir denetimden ayrıldığında (örneğin, bir veya birden çok etkin denetim içeren bir formu kapattığınızda veya aynı form üzerinde başka bir denetime geçtiğinizde, Exit ve LostFocus olayları şu sırayla gerçekleşir:

ÇıkışokuLostFocus

Formu kapattığınızda, form kapatma işlemiyle ilişkilendirilmiş olaylardan (Unload, Deactivate ve Close gibi) sonra Exit ve LostFocus olayları şu şekilde gerçekleşir:

Çıkış (denetim) okuLostFocus (denetim) okuKaldır (form) okuDevre dışı bırak (form) okKapat (form)

Denetimdeki verileri değiştirme ve güncelleştirme

Formdaki bir denetime veri girdiğinizde veya verilerini değiştirdiğinizde ve ardından odağı başka bir denetime taşıdığınızda, BeforeUpdate ve AfterUpdate olayları gerçekleşir:

BeforeUpdateokAfterUpdate

BeforeUpdate ve AfterUpdate olaylarından sonra, değeri değişen denetim için Exit ve LostFocus olayları gerçekleşir:

BeforeUpdateokAfterUpdateokuÇıkışokuLostFocus

Metin kutusundaki veya birleşik giriş kutusunun metin kutusu bölümündeki metni değiştirdiğinizde, Change olayı gerçekleşir. Denetimin içeri her değiştiğinde, ama siz odağı farklı bir denetim veya kayda taşımadan önce (dolayısıyla, BeforeUpdate ve AfterUpdate olayları gerçekleşmeden önce) bu olay gerçekleşir. Metin kutusunda veya birleşik giriş kutusunun metin kutusu bölümünde bastığınız her tuş için aşağıdaki olay sırası gerçekleşir:

KeyDownokKeyPressokKirliokOk DeğiştirokKeyUp

Birleşik giriş kutusuna birleşik giriş kutusu listesinde bulunmayan bir değer girdiğinizde ve ardından odağı başka bir denetime veya kayda taşımaya çalıştığınızda, NotInList olayı gerçekleşir. NotInList olayı, klavye olaylarından ve birleşik giriş kutusu için Change olaylarından sonra ancak diğer herhangi bir denetim veya formun olaylarından önce gerçekleşir. Birleşik giriş kutusunun LimitToList özelliği Evet olarak ayarlanırsa, formun Error olayı NotInList olayından hemen sonra gerçekleşir:

KeyDownokKeyPressokKirliokOk DeğiştirTuşuUpokNotInListokHata

Sayfanın Başı

Formlardaki kayıtlar için olayların sırası

Olaylar, odağı farklı bir kayda taşıdığınızda, bir kayıttaki verileri güncelleştirdiğinizde, var olan bir kaydı veya kaydı sildiğinizde veya yeni bir kayıt oluşturduğunuzda formlardaki kayıtlar için gerçekleşir.

Odağı kayıtlara taşıma ve kayıtlardaki verileri güncelleştirme

Odağı formda var olan bir kayda taşıdığınızda, kayıtta verileri girdiğinizde veya değiştirdiğinizde ve ardından odağı başka bir kayda taşıdığınızda, form için aşağıdaki olay dizisi gerçekleşir:

Geçerli (form) okuBeforeUpdate (form) okuAfterUpdate (form) okuGeçerli (form)

Verileri değiştirilmiş olan kayıttan çıktığınızda ama bir sonraki kayda girmeden önce, odağın bulunduğu denetim için Exit ve LostFocus olayları gerçekleşir. Bu olaylar, form için BeforeUpdate ve AfterUpdate olaylarından sonra aşağıdaki gibi gerçekleşir:

BeforeUpdate (form) okuAfterUpdate (form) okuÇıkış (denetim) okuLostFocus (denetim) okuGeçerli (form)

Siz odağı formdaki denetimler arasında taşırken, her denetim için olaylar gerçekleşir. Örneğin, aşağıdakileri yaptığınızda şu olay dizisi gerçekleşir:

  • Formu açma ve denetimdeki verileri değiştirme:
    Geçerli (form) okuEnter (denetim) okuGotFocus (denetim) okuBeforeUpdate (denetim) okuAfterUpdate (denetim)
  • Odağı başka bir denetime taşıma:
    Çıkış (control1) okuLostFocus (control1) okuEnter (control2) okuGotFocus (control2)
  • Odağı başka bir kayda taşıma:
    BeforeUpdate (form) okuAfterUpdate (form) okuÇıkış (denetim2) okuLostFocus (control2) okuGeçerli (form)

Kayıtları silme

Kaydı sildiğinizde form için aşağıdaki olaylar gerçekleşir ve Microsoft Office Access silme işlemini onaylamanızı isteyen bir iletişim kutusu görüntüler:

DeletearrowBeforeDelConfirmarrowAfterDelConfirm

Delete olayını iptal ederseniz, BeforeDelConfirm ve AfterDelConfirm olayları gerçekleşmez ve iletişim kutusu görüntülenmez.

Yeni kayıt oluşturma

Odağı form üzerinde yeni (boş) bir kayda taşıdığınızda ve ardından bir denetime veri yazarak yeni kayıt oluşturduğunuzda, aşağıdaki olay dizisi gerçekleşir:

Geçerli (form) okEnter (denetim) okuGotFocus (denetim) okuBeforeInsert (form) okAfterInsert (form)

BeforeInsert (form) olayı, denetime yazmaya başladığınızda tetikler. AfterInsert (form) olayı, kayıttan ayrıldıktan sonra tetikler.

BeforeInsert olayından sonra ve AfterInsert olayından önce, formdaki denetimler için ve yeni kayıt için BeforeUpdate ve AfterUpdate olayları gerçekleşir.

Sayfanın Başı

Formlar ve alt formlar için olayların sırası

Bir formu açtığınızda veya kapattığınızda, formlar arasında geçiş yaptığınızda ya da formdaki veya alt formdaki verilerle çalıştığınızda, formlar için olaylar gerçekleşir.

Formu açma ve kapatma

Formu açtığınızda, form için aşağıdaki olay dizisi gerçekleştir:

AçıkokOk YükleOkYeniden boyutlandırOkEtkinleştirokGeçerli

Form üzerinde hiç etkin denetim yoksa, Activate olayından sonra ama Current olayından önce form için GotFocus olayı gerçekleşir.

Formu kapattığınızda, form için aşağıdaki olay dizisi gerçekleştir:

KaldırokuDevre Dışı BırakokuKapat

Formda etkin denetim yoksa, Form için LostFocus olayı Unload olayından sonra ancak Deactivate olayından önce gerçekleşir.

Formlar arasında geçiş yapma

İki form arasında geçiş yaptığınızda, ilk form için Deactivate olayı ve ikinci form için de Activate olayı gerçekleşir:

Devre dışı bırak (form1) okuEtkinleştir (form2)

Formdan Access'teki başka bir nesne sekmesine geçtiğinizde de form için Deactivate olayı gerçekleşir. Öte yandan, bir iletişim kutusuna, PopUp özelliği Yes olarak ayarlanmış bir forma veya başka bir programın penceresine geçtiğinizde, Deactivate olayı gerçekleşmez.

Not

Odağı zaten açık olan bir forma taşırsanız, odağı bu forma taşırken OpenForm eylemini kullanmış olsanız bile, Open olayı gerçekleşmez.

Formdaki verilerle çalışma

Formdaki kayıtlar arasında geçiş yaptığınızda ve verileri değiştirdiğinizde, form ve denetim olayları gerçekleşir. Örneğin, formu ilk kez açtığınızda aşağıdaki olay dizisi gerçekleştir:

Açık (form) okYükle (form) okuYeniden boyutlandırma (form) okuEtkinleştir (form) okuGeçerli (form) okEnter (denetim) okuGotFocus (denetim)

Benzer şekilde, formu kapattığınızda aşağıdaki olay dizisi gerçekleştir:

Çıkış (denetim) okuLostFocus (denetim) okuKaldır (form) okuDevre dışı bırak (form) okKapat (form)

Denetimdeki verileri değiştirdiyseniz, denetim için Exit olayından önce hem denetim hem de form için BeforeUpdate ve AfterUpdate olayları gerçekleşir.

Alt formlarla çalışma

Alt form içeren bir formu açtığınızda, ana formdan önce alt form ve onun kayıtları yüklenir. Dolayısıyla, alt form ve onun denetimleri için olaylar (Open, Current, Enter ve GotFocus gibi), form için olan olaylardan önce gerçekleşir. Öte yandan, alt formlar için Activate olayı gerçekleşmez. Bu nedenle, ana formun açılması yalnızca ana form için Activate olayını tetikler.

Benzer biçimde, alt form içeren bir formu kapattığınızda, alt form ve onun kayıtlarının yüklemesi, ana formdan sonra kaldırılır. Alt formlar için Deactivate olayı gerçekleşmez. Bu nedenle, ana formun kapatılması yalnızca ana form için Deactivate olayını tetikler. Denetimler, form ve alt form için olaylar şu sırada gerçekleşir:

  1. Alt formun denetimleri için olaylar (Exit ve LostFocus gibi)
  2. Formun denetimleri için olaylar (alt form denetimi de içinde)
  3. Form için olaylar (Deactivate ve Close gibi)
  4. Alt form için olaylar

Not

Alt form için olaylar ana form kapatıldıktan sonra gerçekleştiğinden, bir alt form olayından ana formu kapatma işlemini iptal etme gibi bazı olaylar gerçekleşmez. Bu tür doğrulama testlerini ana formdaki bir olaya taşımanız gerekir.

Sayfanın Başı

Tuş vuruşları ve fare tıklamaları için olayların sırası

Form veya denetim odaktayken tuşlara bastığınızda veya tuş vuruşları gönderdiğinizde formlar ve denetimler için klavye olayları gerçekleşir. Fare işaretçisi bir form, bölüm veya denetimdeyken fare düğmelerine tıkladığınızda, formlar, form bölümleri ve denetimler için fare olayları gerçekleşir. Fare işaretçisini form, bölüm veya denetim üzerinde taşıdığınızda da fare olayları gerçekleşir.

Klavye olayları

Formdaki bir denetim odaktayken bir tuşa basıp bıraktığınızda (veya tuş vuruşu göndermek için SendKeys eylemini veya deyimini kullandığınızda), aşağıdaki olay dizisi gerçekleşir:

KeyDownokuKeyPressokKeyUp

BIR tuşa basıp bıraktığınızda veya ANSI karakter kümesinde bir tuş vuruşu gönderdiğinizde , KeyDown, KeyPress ve KeyUp olaylarının tümü gerçekleşir. Bir ANSI tuşuna basıp basılı tutarsanız, siz tuşu bırakana kadar birbiri ardından KeyDown ve KeyPress olayları tekrar tekrar gerçekleşir (KeyDown, KeyPress, KeyDown, KeyPress, vb.); sonra da KeyUp olayı gerçekleşir.

ANSI dışında bir tuşa basıp bırakırsanız, KeyDown ve KeyUp olayları gerçekleşir. ANSI dışında bir tuşa basıp basılı tutarsanız, siz tuşu bırakana kadar tekrar tekrar KeyDown olayı gerçekleşir ve sonra da KeyUp olayı gerçekleşir.

Bir tuşa basılması denetim için başka bir olayı tetikliyorsa, söz konusu olay KeyPress olayından sonra ama KeyUp olayından önce gerçekleşir. Örneğin, bir tuş vuruşu metin kutusundaki metni değiştiriyorsa, yani Change olayını tetikliyorsa, aşağıdaki olay dizisi gerçekleşir:

KeyDownokKeyPressokTuşu DeğiştirokKeyUp

Tuş vuruşu odağın bir denetimden başka bir denetime geçmesine neden oluyorsa, ilk denetim için KeyDown olayı oluşurken ikinci denetim için KeyPress ve KeyUp olayları gerçekleşir. Örneğin, denetimdeki verileri değiştirir ve ardından SEKME tuşuna basarak bir sonraki denetime geçerseniz, aşağıdaki olay dizisi gerçekleşir:

  • İlk denetim:
    KeyDownokuBeforeUpdateokAfterUpdatearrowExitarrowLostFocus
  • İkinci denetim:
    EnterokuGotFocusokKeyPressokKeyUp

Fare olayları

Fare işaretçisi bir denetim veya formun üzerindeyken fare düğmesine tıklayıp bıraktığınızda, denetim için aşağıdaki olay dizisi gerçekleşir:

MouseDownokuMouseUpokTıklama

Odak denetimdeyse ve odağı başka bir denetime taşımak için bu ikinci denetime tıklarsanız, aşağıdaki olay dizisi gerçekleşir:

  • İlk denetim:
    ÇıkışokuLostFocus
  • İkinci denetim:
    EnterokuGotFocusokuMouseDownokMouseUpokTıklama

Başka bir kayda geçer ve sonra bir denetime tıklarsanız, denetim için Enter olayından önce form için Current olayı da gerçekleşir.

Denetime çift tıklamak, hem Click hem de DblClick olaylarının gerçekleşmesine neden olur. Örneğin komut düğmesi dışında bir denetime çift tıkladığınızda, denetim için aşağıdaki olay dizisi gerçekleşir:

MouseDownokuMouseUpokTıklamaokuOk FareUp'ı tıklatın

Komut düğmesine çift tıkladığınızda, önceki olay dizisi gerçekleşir ve bunu ikinci bir Click olayı izler.

Fare işaretçisini form, bölüm veya denetim üzerinde hareket ettirdiğinizde, form, bölüm veya denetim için MouseMove olayı gerçekleşir. Bu olay, diğer fare olaylarından bağımsızdır.

Sayfanın Başı

Raporlar ve rapor bölümleri için olayların sırası

Raporu yazdırmak veya önizlemek için açtığınızda ya da raporu kapattığınızda, raporlar ve rapor bölümleri için olaylar gerçekleşir.

Raporlar için olaylar

Yazdırmak veya önizlemek üzere bir raporu açtığınızda ve daha sonra raporu kapattığınızda veya Access'te başka bir nesne sekmesine geçtiğinizde, rapor için aşağıdaki olay dizisi gerçekleşir:

AçıkokYükokuEtkinleştirokKapatokDevre Dışı Bırak

İki açık rapor arasında geçiş yaptığınızda, ilk rapor için Deactivate olayı ve ikinci rapor için de Activate olayı gerçekleşir:

Devre dışı bırak (rapor1) okuEtkinleştir (rapor2)

Rapordan Access'teki başka bir nesne sekmesine geçtiğinizde de rapor için Deactivate olayı gerçekleşir. Öte yandan, bir iletişim kutusuna, PopUp özelliği Yes olarak ayarlanmış bir forma veya başka bir programın penceresine geçtiğinizde, Deactivate olayı gerçekleşmez.

Sorguyu temel alan bir raporu açtığınızda, Access temel sorguyu çalıştırmadan önce rapor için Open olayını tetikler. Sonuç olarak, Open olayını yanıtlayan bir makro veya olay yordamı kullanarak raporun ölçütlerini ayarlayabilirsiniz. Örneğin makro veya olay yordamı, rapor ölçütlerini girebileceğiniz özel bir iletişim kutusu açabilir.

Rapor bölümleri için olaylar

Raporu yazdırdığınızda veya önizlediğinizde, rapor için Open ve Activate olayları gerçekleştikten sonra ama Close veya Deactivate olayları gerçekleşmeden önce, rapor bölümleri için Format ve Print olayları gerçekleşir:

(rapor) okuYükle (rapor) okuEtkinleştir (rapor) okuBiçim (rapor bölümü) okuYazdır (rapor bölümü) okuKapat (rapor) okuDevre Dışı Bırak (rapor)

GüvenlikRaporların kullanıcı filtrelemesini etkinleştirmek için Rapor Görünümü'nü kullanabilirsiniz. Ancak Baskı Önizleme'nin aksine, herhangi bir bölümdeki Biçim ve Yazdırma olayları Rapor Görünümü'nde gerçekleşmez. Bu durum, bu olaylar içindeki denetimlerde (etiket resim yazıları, görüntüleme durumu, koşullu biçimlendirme, denetimlerin yeniden boyutlandırılması vb.) görüntülenen VBA işlev sonuçları ve kullanıcı tanımlı yordamlar için de geçerlidir. Bu nedenle, bu olaydaki kodu gizli verileri biçimlendirmek, gizlemek veya yazdırmak için kullanmayın; bu veriler açığa çıkabilir. AllowReportView özelliğini Hayır olarak ayarlayarak verileri önceden filtrelemenizi veya Rapor Önizlemesini devre dışı bırakmanızı öneririz.

Buna ek olarak, biçimlendirme sırasında veya sonrasında ama Print olayından önce aşağıdaki olaylar gerçekleşir:

  • Rapor biçimlendirmesi sırasında Access önceki bir bölüme döndüğünde Retreat olayı gerçekleşir.
  • Rapor tarafından görüntülenen kayıt yoksa NoData olayı gerçekleşir.
  • Biçimlendirme sonrasında ama yazdırma öncesinde Page olayı gerçekleşir. Yazdırılan raporun görünümünü özelleştirmek için bu olayı kullanabilirsiniz.

Sayfanın Başı