ترتيب أحداث كائنات قاعدة البيانات

ينطبق على
Access لـ Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

يمكن أن يؤدي إجراء واحد، مثل الانتقال من عنصر تحكم واحد على عنصر إلى عنصر تحكم آخر، إلى تشغيل عدة أحداث مختلفة، والتي تحدث في تسلسل معين. تعتبر معرفة وقت وقوع الأحداث والترتيب الذي تحدث فيه أمراً مهماً، لأنه قد يؤثر على كيفية تشغيل وحدات الماكرو أو إجراءات الأحداث ووقت تشغيلها. على سبيل المثال، إذا كان هناك إجراءين من الأحداث سيتم تشغيلهما في ترتيب معين، فستحتاج إلى التأكد من أن الأحداث المقترنة بهما تحدث في ذلك الترتيب نفسه.

في هذه المقالة

ترتيب الأحداث لعناصر التحكم في النماذج

تحدث الأحداث لعناصر التحكم في النماذج عند نقل التركيز إلى عنصر تحكم، وعند تغيير البيانات وتحديثها في عنصر تحكم.

ملاحظة

يعرض Microsoft Office Access أسماء الحدث بشكل مختلف قليلاً في "محرر Visual Basic" عن طريقة عرضها في صفحة الخصائص ومنشئ الماكرو. على سبيل المثال، الحدث المسمى بـ ‏On Got Focus‏ في صفحة خصائص النموذج وفي "منشئ الماكرو" يسمى بـ GotFocus في "محرر Visual Basic". تستخدم الأمثلة في هذه المقالة تنسيق Visual Basic for Applications‏ (VBA) لأسماء الحدث.

نقل التركيز إلى عنصر تحكم

عند نقل التركيز إلى عنصر تحكم في نموذج (على سبيل المثال، من خلال فتح نموذج يحتوي على عنصر تحكم نشط واحد أو أكثر، أو من خلال نقل التركيز إلى عنصر تحكم آخر في النموذج نفسه)، يقع الحدثان Enter وGotFocus في الترتيب التالي:

أدخلسهمGotFocus

عند فتح نموذج، يقع الحدثان Enter وGotFocus بعد الأحداث المقترنة بفتح النموذج (على سبيل المثال فتح وتنشيط وحالي)، كما يلي:

سهم فتح (نموذج) تنشيط (نموذج) سهمالحالي (نموذج) سهمEnter (عنصر تحكم)GotFocus (عنصر تحكم)

عندما ينتقل التركيز من عنصر تحكم في نموذج (على سبيل المثال، عند إغلاق نموذج يحتوي على عنصر تحكم نشط واحد أو أكثر، أو عند الانتقال إلى عنصر تحكم آخر في النموذج نفسه)، يقع الحدثان Exit وLostFocus بالترتيب التالي:

سهم الخروجLostFocus

عند إغلاق نموذج، يقع الحدثان Exit وLostFocus قبل الأحداث المقترنة بإغلاق النموذج (مثل تحميل وإلغاء تنشيط وإغلاق)، كما يلي:

سهم خروج (عنصر تحكم) سهمLostFocus (عنصر تحكم) سهمإلغاء التحميل (نموذج) إلغاء تنشيط (نموذج) سهمإغلاق (نموذج)

تغيير البيانات وتحديثها في عنصر تحكم

عند إدخال البيانات أو تغييرها في عنصر تحكم في نموذج ما ثم نقل التركيز إلى عنصر تحكم آخر، تقع الأحداث BeforeUpdate وAfterUpdate:

سهم BeforeUpdateAfterUpdate

يقع الحدثان Exit وLostFocus لعنصر تحكم تتغير قيمته بعد الحدثين BeforeUpdate وAfterUpdate:

سهم BeforeUpdateسهمAfterUpdateسهمإنهاءLostFocus

عندما تقوم بتغيير النص في مربع نص أو في مقطع مربع النص من مربع تحرير وسرد، يقع الحدث Change. يقع هذا الحدث عندما يتم تغيير محتويات عنصر التحكم، ولكن قبل نقل التركيز إلى سجل أو عنصر تحكم مختلف (وذلك قبل وقوع الحدثين BeforeUpdate وAfterUpdate). يحدث التسلسل التالي من الأحداث لكل مفتاح تضغط عليه في مربع نص أو في مقطع مربع النص من مربع تحرير وسرد:

سهم KeyDownKeyPressالسهمالقذرتغييرالسهم KeyUp

يقع الحدث NotInList بعد إدخال قيمة في مربع تحرير وسرد لم يتم العثور عليها في قائمة مربع التحرير والسرد، ثم تتم محاولة نقل التركيز إلى سجل أو عنصر تحكم آخر. يقع الحدث NotInList بعد أحداث لوحة المفاتيح وأحداث Change لمربع التحرير والسرد، ولكن قبل أحداث أي عنصر تحكم آخر أو النموذج. إذا تم تعيين الخاصية LimitToList لمربع التحرير والسرد إلى نعم، يقع حدث الخطأ للنموذج مباشرة بعد الحدث NotInList :

سهم KeyDownKeyPressسهممتسخسهمتغييرسهمKeyUpسهمNotInListخطأ

أعلى الصفحة

ترتيب الأحداث للسجلات في النماذج

تحدث الأحداث للسجلات الموجودة في النماذج عند نقل التركيز إلى سجل مختلف أو تحديث البيانات في سجل أو حذف سجل أو سجلات موجودة أو إنشاء سجل جديد.

نقل التركيز إلى السجلات وتحديث البيانات في السجلات

عند نقل التركيز إلى سجل موجود في نموذج ما، أدخل البيانات الموجودة في السجل أو قم بتغييرها، ثم انقل التركيز إلى سجل آخر، يحدث التسلسل التالي من الأحداث للنموذج:

سهم (نموذج) حاليسهمBeforeUpdate (نموذج) سهمAfterUpdate (نموذج) الحالي (نموذج)

عندما تغادر السجل الذي تم تغيير بياناته، ولكن قبل دخول السجل التالي، يقع الحدثان Exit وLostFocus لعنصر التحكم الذي يحتوي على التركيز. تقع هذه الأحداث بعد الحدثين BeforeUpdate وAfterUpdate للنموذج، كما يلي:

سهم BeforeUpdate (نموذج) سهمAfterUpdate (نموذج)خروج (عنصر تحكم) سهمLostFocus (عنصر تحكم) السهمالحالي (نموذج)

أثناء نقل التركيز بين عناصر التحكم الموجودة في نموذج ما، تقع الأحداث لكل عنصر تحكم. على سبيل المثال، يحدث التسلسل التالي من الأحداث عند إجراء ما يلي:

  • فتح نموذج وتغيير البيانات في عنصر تحكم:
    سهم (نموذج) الحاليأدخل (عنصر تحكم) سهمGotFocus (عنصر تحكم) سهمBeforeUpdate ( عنصر تحكم) بعد التحديث (عنصر تحكم)
  • نقل التركيز إلى عنصر تحكم آخر:
    سهم Exit (control1) LostFocus (control1) سهمEnter (control2)GotFocus (control2)
  • نقل التركيز إلى سجل آخر:
    سهم BeforeUpdate (نموذج) سهمAfterUpdate (نموذج) سهمExit (control2)LostFocus (control2) سهمCurrent (form)

حذف السجلات

عندما تقوم بحذف سجل، تقع الأحداث التالية للنموذج، ويعرض Microsoft Office Access مربع حوار يطالبك بتأكيد الحذف:

حذفسهمBeforeDelConfirmسهمAfterDelConfirm

إذا قمت بإلغاء الحدث Delete، فلا يقع الحدثان BeforeDelConfirm وAfterDelConfirm ولا يتم عرض مربع الحوار.

إنشاء سجل جديد

عند نقل التركيز إلى سجل (فارغ) جديد في نموذج ما ثم إنشاء سجل جديد عن طريق كتابة البيانات في عنصر تحكم، يحدث التسلسل التالي من الأحداث:

سهم (نموذج) الحاليأدخل (عنصر تحكم) سهمGotFocus (عنصر تحكم) سهمBeforeInsert ( النموذج) بعدInsert (نموذج)

يتم تشغيل الحدث BeforeInsert (النموذج) بمجرد بدء الكتابة في عنصر التحكم. يتم تشغيل الحدث AfterInsert (النموذج) بعد مغادرة السجل.

يقع الحدثان BeforeUpdate وAfterUpdate لعناصر التحكم الموجودة في النموذج وللسجل الجديد بعد الحدث BeforeInsert وقبل الحدث AfterInsert.

أعلى الصفحة

ترتيب الأحداث للنماذج والنماذج الفرعية

تقع الأحداث للنماذج عند فتح نموذج أو إغلاقه أو التنقل بين النماذج أو العمل على البيانات في نموذج أو نموذج فرعي.

فتح نموذج وإغلاقه

عند فتح نموذج، يحدث التسلسل التالي من الأحداث للنموذج:

سهم فتحسهمتحميلتغيير حجم السهمتنشيطالسهمالحالي

إذا لم يكن هناك عناصر تحكم نشطة في النموذج، يقع الحدث GotFocus للنموذج بعد الحدث تنشيط ولكن قبل الحدث حالي.

عند إغلاق نموذج، يحدث التسلسل التالي من الأحداث للنموذج:

إلغاء تحميلسهمإلغاء تنشيطالسهمإغلاق

إذا لم تكن هناك عناصر تحكم نشطة في النموذج، يقع الحدث LostFocus للنموذج بعد حدث إلغاء التحميل ولكن قبل الحدث إلغاء التنشيط .

التنقل بين النماذج

عند التبديل بين نموذجين مفتوحين، يقع الحدث إلغاء تنشيط للنموذج الأول، والحدث تنشيط للنموذج الثاني:

إلغاء تنشيط (نموذج1) سهمتنشيط (نموذج2)

يقع أيضاً الحدث إلغاء تنشيط لنموذج ما عند التبديل من النموذج إلى علامة تبويب عنصر آخر في Access. على الرغم من ذلك، لا يقع الحدث إلغاء التنشيط عند التبديل إلى مربع حوار أو إلى نموذج يتم تعيين خاصيته منبثق إلى نعم أو إلى نافذة في برنامج آخر.

ملاحظة

لا يقع الحدث فتح إذا قمت بنقل التركيز إلى نموذج مفتوح بالفعل، حتى إذا قمت بنقل التركيز إلى ذلك النموذج من خلال تنفيذ الإجراء OpenForm.

العمل على البيانات في نموذج ما

تقع أحداث النماذج وعناصر التحكم عند التنقل بين السجلات في النموذج وعند تغيير البيانات. على سبيل المثال، عند فتح نموذج لأول مرة، يحدث التسلسل التالي من الأحداث:

سهم فتح (نموذج) سهمتحميل (نموذج) سهمتغيير حجم (نموذج) سهمتنشيط (نموذج) سهمالحالي (نموذج) أدخل (عنصر تحكم) سهمGotFocus (عنصر تحكم)

وبالمثل، عند إغلاق نموذج، يحدث التسلسل التالي من الأحداث:

سهم خروج (عنصر تحكم) سهمLostFocus (عنصر تحكم) سهمإلغاء التحميل (نموذج) إلغاء تنشيط (نموذج) سهمإغلاق (نموذج)

إذا قمت بتغيير البيانات في عنصر تحكم، يقع الحدثان BeforeUpdate وAfterUpdate لكل من عنصر التحكم والنموذج قبل الحدث Exit لعنصر التحكم.

العمل باستخدام النماذج الفرعية

عند فتح نموذج يحتوي على نموذج فرعي، يتم تحميل النموذج الفرعي وسجلاته قبل النموذج الرئيسي. وبالتالي، تقع أحداث النموذج الفرعي وعناصر التحكم الخاصة به (مثل Open وCurrent وEnter وGotFocus) قبل أحداث النموذج. على الرغم من ذلك، لا يقع الحدث تنشيط للنماذج الفرعية. وبالتالي، يؤدي فتح نموذج رئيسي إلى تشغيل حدث تنشيط للنموذج الرئيسي فقط.

وبشكل مماثل، عند إغلاق نموذج يحتوي على نموذج فرعي، يتم تحميل النموذج الفرعي وسجلاته بعد النموذج. لا يقع الحدث إلغاء التنشيط للنماذج الفرعية. وبالتالي، يؤدي إغلاق نموذج رئيسي إلى تشغيل حدث إلغاء تنشيط للنموذج الرئيسي فقط. تقع الأحداث لعناصر التحكم والنموذج والنموذج الفرعي في الترتيب التالي:

  1. أحداث عناصر تحكم النموذج الفرعي (مثل Exit وLostFocus)
  2. أحداث عناصر تحكم النموذج (بما في ذلك عنصر تحكم النموذج فرعي)
  3. أحداث النموذج (مثل إلغاء التنشيط وإغلاق)
  4. أحداث النموذج الفرعي

ملاحظة

نظراً لوقوع الأحداث لنموذج فرعي بعد إغلاق النموذج الرئيسي، لن تقع أحداث معينة، مثل إلغاء عملية إغلاق النموذج الرئيسي من حدث في النموذج الفرعي. قد تحتاج إلى نقل هذه الأنواع من اختبارات التحقق من الصحة إلى حدث في النموذج الرئيسي.

أعلى الصفحة

ترتيب الأحداث لضغطات المفاتيح ونقرات الماوس

تحدث أحداث لوحة المفاتيح للنماذج وعناصر التحكم عند الضغط على المفاتيح أو إرسال ضغطات المفاتيح بينما يكون التركيز على النموذج أو عنصر التحكم. تقع أحداث الماوس للنماذج ومقاطع النماذج وعناصر التحكم في النماذج عند النقر فوق أزرار الماوس أثناء وضع مؤشر الماوس على أحد النماذج أو المقاطع أو عناصر التحكم. تقع أيضاً أحداث الماوس عند تحريك مؤشر الماوس فوق أحد النماذج أو المقاطع أو عناصر التحكم.

أحداث لوحة المفاتيح

عند الضغط على مفتاح وتحريره أثناء التركيز على عنصر تحكم في نموذج (أو استخدام الإجراء أو العبارة SendKeys لإرسال ضغطة مفاتيح)، يحدث التسلسل التالي من الأحداث:

سهم KeyDownKeyPressالسهمKeyUp

عند الضغط على مفتاح وتحريره أو إرسال ضغطة مفاتيح في مجموعة أحرف ANSI، تحدث جميع أحداث KeyDownوKeyPressوKeyUp . إذا قمت بالضغط باستمرار على مفتاح ANSI، يتبادل الحدثان KeyDown وKeyPress بشكل متكرر (KeyDown وKeyPress وKeyDown وKeyPress وهكذا) حتى تقوم بتحرير المفتاح؛ ثم يقع الحدث KeyUp.

إذا قمت بالضغط على مفتاح غير ANSI وتحريره، يقع الحدثان KeyDown وKeyUp. إذا قمت بالضغط باستمرار على مفتاح غير ANSI، يقع الحدث KeyDown بشكل متكرر حتى تقوم بتحرير المفتاح، ثم يقع الحدث KeyUp.

إذا كان الضغط على أحد المفاتيح يؤدي إلى تشغيل حدث آخر لعنصر تحكم، يقع هذا الحدث بعد الحدث KeyPress لكن قبل الحدث KeyUp. على سبيل المثال، إذا قامت ضغطة مفتاح بتغيير النص في مربع نص، التي تقوم بتشغيل حدث Change، يحدث التسلسل التالي من الأحداث:

سهم KeyDownKeyPressسهمتغييرمفتاح السهم

إذا كانت أحد ضغطات المفاتيح تؤدي إلى انتقال التركيز من عنصر تحكم واحد إلى عنصر تحكم آخر، يقع الحدث KeyDown لعنصر التحكم الأول، بينما يقع الحدثان KeyPress وKeyUp لعنصر التحكم الثاني. على سبيل المثال، إذا قمت بتغيير البيانات في عنصر تحكم ثم قمت بالضغط على المفتاح TAB للانتقال إلى عنصر التحكم التالي، يحدث التسلسل التالي من الأحداث:

  • عنصر التحكم الأول:
    سهم KeyDownقبلسهم التحديث سهمAfterUpdateسهمإنهاءLostFocus
  • عنصر التحكم الثاني:
    أدخلسهمGotFocusسهمKeyPressKeyUp

أحداث الماوس

عند النقر فوق أحد أزرار الماوس وتحريره أثناء وضع مؤشر الماوس على عنصر تحكم في نموذج ما، يحدث التسلسل التالي من الأحداث لعنصر التحكم:

سهم الماوس لأسفلالماوس فوقالسهم فوق

إذا كان التركيز على عنصر تحكم ما وقمت بالنقر فوق عنصر تحكم آخر لنقل التركيز إلى عنصر التحكم الثاني هذا، يحدث التسلسل التالي من الأحداث:

  • عنصر التحكم الأول:
    سهم الخروجLostFocus
  • عنصر التحكم الثاني:
    أدخلسهمGotFocusسهمMouseDownسهمMouseUpانقر فوق

إذا انتقلت إلى سجل آخر ثم قمت بالنقر فوق عنصر تحكم ما، يقع الحدث Current للنموذج أيضاً قبل الحدث Enter لعنصر التحكم.

يؤدي النقر المزدوج فوق أحد عناصر التحكم إلى وقوع الحدثين Click وDblClick. على سبيل المثال، عندما تنقر نقراً مزدوجاً فوق أحد عناصر التحكم فضلاً عن أحد أزرار الأوامر، يحدث التسلسل التالي من الأحداث لعنصر التحكم:

سهم MouseDownMouseUpسهمالنقر فوقسهمDblClickسهمMouseUp

عندما تنقر نقراً مزدوجاً فوق أحد أزرار الأوامر، يحدث التسلسل السابق من الأحداث، متبوعاً بحدث Click ثانٍ.

يقع حدث MouseMove لأحد النماذج أو المقاطع أو عناصر التحكم عند تحريك مؤشر الماوس فوق النموذج أو المقطع أو عنصر التحكم. هذا الحدث مستقل عن أحداث الماوس الأخرى.

أعلى الصفحة

ترتيب الأحداث للتقارير ومقاطع التقارير

تقع الأحداث للتقارير ومقاطع التقارير عند فتح تقرير لطباعته أو معاينته أو عند إغلاق تقرير.

الأحداث للتقارير

عندما تفتح تقرير لطباعته أو معاينته ثم لاحقاً تقوم بإغلاق التقرير أو الانتقال إلى علامة تبويب عنصر آخر في Access، يحدث التسلسل التالي من الأحداث للتقرير:

سهم فتحسهمتحميلسهمتنشيطسهمإغلاقإلغاء التنشيط

عند التبديل بين تقريرين مفتوحين، يقع الحدث إلغاء تنشيط للتقرير الأول، والحدث تنشيط للتقرير الثاني:

إلغاء تنشيط (report1) سهمActivate (report2)

يقع أيضاً الحدث إلغاء تنشيط لتقرير ما عند التبديل من التقرير إلى علامة تبويب عنصر آخر في Access. على الرغم من ذلك، لا يقع الحدث إلغاء التنشيط عند التبديل إلى مربع حوار أو إلى نموذج يتم تعيين خاصيته منبثق إلى نعم أو إلى نافذة في برنامج آخر.

عند فتح تقرير يستند إلى استعلام، يقوم Access بتشغيل الحدث فتح للتقرير قبل تشغيل الاستعلام الأساسي. كنتيجة لذلك، يمكنك تعيين معايير التقرير باستخدام ماكرو أو إجراء حدث يستجيب للحدث فتح. على سبيل المثال، قد يفتح إجراء الحدث أو الماكرو مربع حوار مخصص تقوم فيه بإدخال معايير التقرير.

الأحداث لمقاطع التقارير

عندما تقوم بطباعة تقرير أو معاينته، يقع الحدثان تنسيق وطباعة لمقاطع التقارير بعد الحدثين فتح وتنشيط للتقرير وقبل أحداث التقرير إغلاق أو إلغاء التنشيط:

سهم فتح (تقرير) سهمتحميل (تقرير) سهمتنشيط (تقرير) سهمتنسيق (قسم التقرير) سهمطباعة (مقطع التقرير) سهمإغلاق (تقرير) إلغاء تنشيط (تقرير)

الامن يمكنك استخدام طريقة عرض التقرير لتمكين تصفية المستخدم للتقارير. ولكن على عكس معاينة الطباعة، لا يحدث الحدثان تنسيقوطباعة في أي قسم في طريقة عرض التقرير. ينطبق هذا أيضا على نتائج دالة VBA والإجراءات المعرفة من قبل المستخدم التي يتم عرضها في عناصر التحكم (مثل التسميات التوضيحية وحالة العرض والتنسيق الشرطي وتغيير حجم عناصر التحكم وما إلى ذلك) داخل تلك الأحداث. لذلك، لا تستخدم التعليمات البرمجية في هذا الحدث لتنسيق البيانات السرية أو إخفائها أو طباعتها، والتي قد تصبح مكشوفة. نوصي بتصفية البيانات مسبقا أو تعطيل معاينة التقرير عن طريق تعيين الخاصية AllowReportView إلى لا.

بالإضافة إلى ذلك، قد تقع الأحداث التالية أثناء أو بعد التنسيق لكن قبل الحدث طباعة:

  • يقع الحدث التراجع عند رجوع Access إلى مقطع سابق أثناء تنسيق التقرير.
  • يقع الحدث NoData إذا لم يكن هناك أي سجلات معروضة بواسطة التقرير.
  • يقع الحدث صفحة بعد التنسيق ولكن قبل الطباعة. يمكنك استخدام هذا الحدث لتخصيص مظهر التقرير المطبوع.

أعلى الصفحة