تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

قد ينطبق المحتوى هنا على Northwind 2.0 Developer Edition وStarter Edition. 

VBA (Visual Basic for Applications) هي لغة البرمجة المستخدمة في جميع منتجات Office. يتيح لك Learning VBA العمل مع جميع منتجات Office (وليس فقط Access).
عند البحث عن "كيفية"، تأكد من البحث عن أمثلة محددة ل Access وتضمين Microsoft Access في البحث. غالبا ما تعمل حلول منتجات Office الأخرى - ولكن لا يوجد ضمان. Microsoft Access هو منتج ناضج؛ وهذا يعني أن هناك الكثير من الأمثلة هناك؛ وهو أمر رائع بالنسبة لك! 

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

نهاية موارد الدعم ل Office - توزيع Office | Microsoft Learn  

فيما يلي بعض الارتباطات إلى وثائق Access في Microsoft.

ملفات Microsoft Access هي ملفات Office. يجب أن تكون ملفات Office في "موقع موثوق به" أو أن يكون "المحتوى الخاص بها ممكنا". تعتبر هذه العناصر "آمنة" لأنك قمت بإنشائها، أو أنها تأتي من مصدر موثوق به. التحقق من وجود مواقع موثوق بها يحدث في كل مرة تفتح فيها أي ملف office. سنشير إلى هذا باسم Trusted/Enabled من هنا فصاعدا. ملاحظة: إذا تم إصدار إصدار جديد من التطبيق وفتحه من موقع غير موثوق به، فستتكرر عملية تمكين المحتوى.

تعرف على المزيد حول المواقع الموثوق بها.: 

وحدات الماكرو والوظائف والأقسام الفرعية هي كيفية تنفيذ منطق العمل في قاعدة بيانات Access. من المهم بالنسبة لك فهم النطاق والرؤية قبل البدء.


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

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

جزء التنقل هو الطريقة الرئيسية لعرض جميع كائنات قاعدة البيانات والوصول إليها ويعرض على الجانب الأيسر من نافذة Access بشكل افتراضي. 
تم تخصيص جزء التنقل Northwind. أنشأنا فئة مخصصة تسمى Northwind Starter 2.0. يسمح لنا هذا بتنظيم العناصر حسب المنطقة الوظيفية.

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

المتغير العام لوحدة VBA: 

TempVars: 

تخزين القيم في الجدول المحلي

  • توجد المتغيرات العامة و TempVars لجلسة العمل الحالية وتخرج عن النطاق عند إغلاق التطبيق. ماذا لو كنت تريد الاحتفاظ بالمتغيرات المحددة للمستخدم عبر الجلسات؟ يمكنك تخزين هذه الأنواع من القيم في جدول محلي. في Northwind 2.0 يتم حفظ متغير واحد في جدول يسمى SystemSettings. القيمة في الجدول هي ShowWelcome. تخبر هذه القيمة Access إذا كنت تريد رؤية شاشة الترحيب في كل مرة تقوم فيها بتسجيل الدخول أم لا.

نادرا ما تتضمن وحدات الماكرو التي تم إنشاؤها باستخدام معالجات التحكم في Access معالجة الأخطاء على الإطلاق؛ قد يقتصر VBA الذي تم إنشاؤه باستخدام معالجات التحكم على MsgBox Err.Description عام.

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

clsErrorHandler هي الوحدة النمطية للفئة التي تنفذ التعليمات البرمجية لمعالجة الأخطاء. تحافظ الوحدة النمطية للفئة على جميع وظائفها الرئيسية والمساعدة معا في وحدة واحدة، وبالتالي تغلف التعليمات البرمجية.

يستدعي ماكرو AutoExec دالة بدء التشغيل في modStartup. ينشئ مثيل clsErrorHandler ويحفظه كمتغير عمومي بحيث يمكن استخدامه في جميع أنحاء التطبيق.

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

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

في إصدار Northwind Dev، لتنفيذ ميزة MRU (غير الموجودة في إصدار Starter)، يجب أولا إنشاء العناصر التالية: 

  1. جدول لتخزين معلومات MRU.

  2. التعليمات البرمجية لتحديث الجدول عند فتح أمر أو أمر شراء (PO).

  3. التعليمات البرمجية لتحديث القائمة المنسدلة MRU في الشريط.

  4. التعليمات البرمجية لتحميل العنصر عند تحديد عنصر MRU من الشريط.

دعونا ننظر إلى كل من هذه بمزيد من التفصيل. 


1. جدول لتخزين معلومات MRU.

تصميم الجدول MRU يستحق المراجعة، وخاصة فهارسه. لاحظ أن هناك فهرسا مكرر SortIdx للمساعدة في الفرز السريع لعناصر MRU في القائمة المنسدلة للشريط، بالإضافة إلى فهرس فريد لفرض قاعدة العمل التي لكل مستخدم يمكن أن يحدث عنصر مرة واحدة فقط. على سبيل المثال، لا يؤدي فتح نفس الترتيب مرتين إلى إنشاء سجلين في جدول MRU.


يستفيد الجدول من حقيقة أن جميع حقول PK (المفتاح الأساسي) المتعلقة ب MRU في قاعدة البيانات هي ترقيم تلقائي، لذلك يمكن استخدام نوع بيانات عدد صحيح طويل ل PKValue.

2. التعليمات البرمجية لتحديث الجدول عند فتح طلب أو تسجيل الدخول.

في NW2 اخترنا الإضافة إلى قائمة MRU فقط عند إنشاء سجل جديد، وليس عند تحديث سجل موجود مرة أخرى. يمكننا بالتأكيد نقل استدعاء AddToMRU من Form_AfterInsert إلى Form_AfterUpdate لدعم ذلك.

يتم تنفيذ إجراءات AddToMRUوDeleteFromMRU في modGlobal، وهي وحدة نمطية قياسية تكون إجراءاتها العامة مرئية من أي شكل.

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

3. التعليمات البرمجية لتحديث القائمة المنسدلة MRU في الشريط. 

في وقت بدء التشغيل، وبعد استدعاء InvalidateControl ، يتم تنفيذ مجموعة معقدة من الوظائف لملء الشريط.  يتم استدعاء هذه الإجراءات بواسطة الشريط XML في الجدول uSysRibbons الذي يقول جزئيا:

<group id="gCurrentStatus" label="MRU">
    <box id="bxMRU" boxStyle="vertical">
        <dropDown id="ddMRU"
                  getItemCount="ddMRU_GetItemCount"
                  getItemLabel="ddMRU_GetItemLabel"
                  getSelectedItemIndex="ddMRU_GetSelectedItemIndex"
                  getItemID="ddMRU_GetItemID"
                  onAction="ddMRU_OnAction"
                  screentip="Most Recently Used Objects">
        </dropDown>
    </box>
</group>

تملأ دالات رد الاتصال الأربعة هذه القائمة المنسدلة. لاحظ أن هذه هي الفكرة نفسها إلى حد كبير كما هو موضح هنا ل comboboxes القياسية.

إذا قمت بإلغاء التعليق على خطوط Debug.Print في modRibbonCallback وأعدت تشغيل التطبيق، فستقدم النافذة الفورية تسلسلا مثل هذا: 

ddMRU_GetItemCount    ddMRU    6 
ddMRU_GetItemLabel    ddMRU    0      Order 60, Proseware, Inc.
ddMRU_GetItemID       ddMRU    0       2 
ddMRU_GetItemLabel    ddMRU    1      Order 62, Best For You Organics Company
ddMRU_GetItemID       ddMRU    1       4 
ddMRU_GetItemLabel    ddMRU    2      Order 63, Wide World Importers
ddMRU_GetItemID       ddMRU    2       5 
ddMRU_GetItemLabel    ddMRU    3      Order 66, Proseware, Inc.
ddMRU_GetItemID       ddMRU    3       8 
ddMRU_GetItemLabel    ddMRU    4      Order 67, Best For You Organics Company
ddMRU_GetItemID       ddMRU    4       9 
ddMRU_GetItemLabel    ddMRU    5      Order 68, Adatum Corporation
ddMRU_GetItemID       ddMRU    5       10 
ddMRU_GetSelectedItemIndex  ddMRU    0


يمكننا أن نرى هنا أن Access يستدعي أولا إجراء يقوم بإرجاع عدد العناصر المراد تحميلها في الوسيطة ByRef ddMRU_GetItemCount. هذا هو أيضا الوقت الذي نفتح فيه الاستعلام على جدول MRU ونخزنه مؤقتا لأنه على وشك استخدامه عدة مرات. 

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

وأخيرا، فإنه يستدعي إجراء لفصل العنصر الذي يجب تحديده. (في حالتنا، هو الأول.) 

4. رمز لتحميل عنصر عند تحديد عنصر MRU من الشريط.

كما هو الحال مع أي عنصر شريط آخر، تحدد الخاصية OnAction في الشريط XML دالة رد الاتصال لاستخدامها لتنفيذ الإجراء:

onAction="ddMRU_OnAction

يتم تنفيذ هذا الإجراء في modRibbonCallback. يعيد استخدام مجموعة السجلات المفتوحة بالفعل للعثور على السجل مع العنصر المحدد، ثم، اعتمادا على TableName المطلوب، يفتح النموذج المقابل، ويمرر قيمة PK المراد تحميلها.

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟

نشكرك على ملاحظاتك!

×