صلاحية المستخدمين في الاكسس
مع تحميل ملف الشرح
![]() |
صلاحية المستخدمين |
صلاحية المستخدمين يُعَتَبَرُ برنامج Microsoft Access أداة قواعد بيانات مميزة مع أنه لا يُوفِر العديد من المميزات والخصائص التي يقدمها بقية البرامج الأخرى المعروفة (إدارة قواعد البيانات الأخرى) مثل SQL Server إلا أنه يُعَتَبَرُ مناسبًا جدًا للمؤسسات الصغيرة جدًا، ويُفَضَّلُهُ الكثير من المستخدمين بسبب سهولة استخدامه وتثبيته على أجهزة المؤسسات.
ويقدم برنامج Microsoft Access نماذج من خلالها تستطيع استعراض جميع البيانات المطلوبة ويقدم برنامج Microsoft Access أيضاً استعلامات والتي هي إحدى الأدوات الأساسية في Access وتساعد على استرجاع وتحليل البيانات بطريقة مرنة وفعالة.
ويُواجِهُ الكثير من مُطَوِّرَي Access صُعُوبَةً كبيرةً في إنشاء نظام مجموعات وصلاحيات قوي يُمْكِنُ من مدير البرنامج تحديد صلاحيات المستخدمين بشكل دقيق، بهدف حماية البيانات ومنع غير المخولين من الاطلاع عليها وتعديلها.
سنقوم بالشرح تفصيليًا لطريقة إنشاء نظام صلاحيات مميزة، يُمْكِنُكَ تطبيقه على جميع قواعد البيانات التي تعمل عليها.
يرجى ملاحظة أن هذا الدرس متقدم في Access ولن يتم شرح أساسيات البرنامج من خلاله بشكل تفصيلي للغاية، حتى لا نضيع الوقت في التفاصيل الأساسية التي تختلف عن موضوع الدرس.
مع ذلك سأشرح طريقة إنشاء النظام بشكل يستوعبه الجميع إن شاء الله.
وحتى تتمكن من تطبيق الدرس بشكل صحيح يجب أن يكون لديك معرفة جيدة بأساسيات Access بالإضافة إلى خبرة مناسبة في برمجة VBA.
في نهاية الشرح سأترك لك رابطًا لتحميل نموذج صلاحيات المستخدمين وشاشة الدخول إلى قاعدة البيانات التي تم شرحها حتى تتمكن من الاطلاع عليها واستخدام الأكواد الخاصة بنظام الصلاحيات.
وستجد العديد من النماذج والأكواد التي تم إنشاؤها في قاعدة البيانات، ويُمْكِنُكَ الاستفادة منها في العديد من الأمور.
صلاحية المستخدمين في نظام الوصول (Access) تشير إلى مجموعة من الامتيازات والصلاحيات التي يتم تعيينها ويمتاز بها كل مستخدم في النظام دون غيره.
وتعني أيضاً صلاحية المستخدم إلى مدى وصول المستخدم والتحكم الذي يمتلكه في الموارد والمعلومات المخزنة في النظام.
عزيزي القارئ لتعلم أنه تتنوع صلاحيات المستخدمين بناءً على احتياجات المؤسسة أو النظام ويتم تعيينها بواسطة مسؤول النظام أو المشرف.
ويمكنك أيها القارئ تقسيم تلك الصلاحيات لكل مستخدم بما تريده بالأقسام التالية:
قراءة: القدرة على الوصول إلى المعلومات وقراءتها.
المقصود بصلاحية القراءة:أن المستخدم لديه القدرة والصلاحية للوصول إلى المعلومات وقراءتها ويستطيع المستخدم عرض المحتوى والبيانات المخزنة في النظام دون القدرة على تعديلها أو إجراء أي تغييرات عليها.
تحت هذا البند أو ما أقصده بصلاحية القراءة، يمكن للمستخدم استعراض المستندات، وعرض البيانات التفصيلية، واطلاع على التقارير والمعلومات الأخرى المتاحة في النظام إلا أنه من المستحيل إجراء أي تعديلات أو إضافات على هذه المعلومات.
هذه الصلاحيات تمنح بالقراءة وغالبًا ما تكون مفيدة للمستخدمين الذين يحتاجون إلى الوصول إلى المعلومات بغرض الاطلاع والاستعراض مثل الموظفين الذين يحتاجون إلى الاطلاع على تقارير الأداء أو البيانات الإحصائية لاتخاذ القرارات أو المستخدمين الذين يتطلعون إلى استعراض المحتوى المتاح في تطبيق معين.
كتابة: القدرة على إضافة وتعديل المعلومات.
صلاحية الكتابة:
المستخدم لديه القدرة على إضافة وتعديل المعلومات في النظام، ويمكن للمستخدم استخدام هذه الصلاحية لإنشاء سجلات جديدة أو إضافة بيانات إلى سجلات موجودة. مع العلم أيها القارئ العزيز صلاحية الكتابة للمستخدم تمكنه من التعديل للمعلومات الموجودة بالفعل في النظام وتحديثها.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية الكتابة في قاعدة البيانات فإنه يمكنه إضافة سجلات جديدة إلى الجداول، وتعديل القيم الموجودة في السجلات، مثل تحديث عنوان أو رقم الهاتف.
وتعد صلاحية الكتابة مهمة للمستخدمين الذين يحتاجون إلى إدخال أو تعديل البيانات في النظام، مثل الموظفين الذين يسجلون المعلومات الجديدة أو يقومون بتحديث البيانات القائمة.
تحرير: القدرة على تعديل المعلومات وحذفها.
صلاحية التحرير تعني:
القدرة على تعديل المعلومات الموجودة في النظام، بما في ذلك تعديل القيم والبيانات المخزنة، ويحق للمستخدم أيضًا حذف المعلومات الموجودة في النظام.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية التحرير في قاعدة البيانات، فإنه يمكنه تعديل السجلات الحالية، مثل تحديث الأسماء أو تغيير القيم الرقمية، كما يمكنه أيضًا حذف سجلات بيانات بشكل دائم من النظام.
صلاحية التحرير غالبًا ما تكون للمستخدمين الذين يحتاجون إلى إجراء تغييرات مباشرة على البيانات، مثل المشرفين أو المديرين الذين يتحملون مسؤولية تعديل وتحديث البيانات والمحتوى. يجب أن تكون هذه الصلاحية موضوعة تحت رقابة صارمة لضمان الأمان ومنع التعديلات غير المصرح بها أو الحذف العرضي للبيانات.
حذف: القدرة على حذف المعلومات.
صلاحية الحذف تعني أن المستخدم لديه القدرة على حذف المعلومات الموجودة في النظام.
ويعني ذلك أيضاً أنه يمكن للمستخدم إزالة البيانات بشكل دائم من النظام، سواء كانت سجلات أو ملفات أو أي مصادر أخرى للمعلومات.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية الحذف في نظام إدارة المستندات، فإنه يمكنه حذف المستندات القائمة في النظام. ويمكن أن تشمل هذه الصلاحية أيضًا القدرة على حذف سجلات قاعدة البيانات أو مسح الملفات من الأرشيف.
صلاحية الحذف غالبًا ما تكون للمستخدمين الذين يحتاجون إلى القدرة على إزالة المعلومات التي لم تعد ضرورية أو مطلوبة، أو للمستخدمين الذين يتمتعون بمسؤولية الإدارة العليا ويحتاجون إلى التحكم في الموارد والبيانات بشكل شامل.
إنشاء: القدرة على إنشاء موارد جديدة أو حسابات مستخدمين جدد.
صلاحية الإنشاء تعني أن المستخدم لديه القدرة على إنشاء موارد جديدة أو حسابات مستخدمين جدد في النظام، مع إمكانية المستخدم على القدرة على إنشاء مجموعة متنوعة من الموارد، مثل مستندات جديدة، قواعد بيانات، حسابات مستخدمين، مجموعات أمان، وغيرها.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية الإنشاء في نظام إدارة المستخدمين، فإنه يمكنه إنشاء حسابات مستخدمين جديدة وتعيين الأذونات والصلاحيات المناسبة لهم.
صلاحية الإنشاء غالبًا ما تكون مقتصرة على المستخدمين ذوي الصلاحيات الإدارية أو المستخدمين الذين يحتاجون إلى إنشاء وإدارة الموارد الجديدة في النظام.
يتطلب استخدام هذه الصلاحية الحذر والمسؤولية لضمان إنشاء الموارد بشكل صحيح وفقًا للسياسات والمعايير المناسبة.
تنفيذ: القدرة على تنفيذ أو تشغيل برامج أو عمليات معينة.
صلاحية التنفيذ تعني أن المستخدم لديه القدرة على تنفيذ أو تشغيل برامج أو عمليات معينة في النظام.
ويمكن للمستخدم استخدام هذه الصلاحية لتشغيل تطبيقات الكمبيوتر أو البرامج النصية أو الأوامر أو العمليات الأخرى.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية التنفيذ في نظام التشغيل، فإنه يمكنه تشغيل البرامج والتطبيقات المثبتة على النظام، ويمكن للمستخدم استخدام هذه الصلاحية لتنفيذ الأوامر أو البرامج النصية المخصصة التي تتطلب الصلاحية للتشغيل.
صلاحية التنفيذ عادة تمنح للمستخدمين الذين يحتاجون إلى تشغيل برامج محددة أو تنفيذ عمليات معينة في النظام.
ويتعين أن يكون هناك رقابة صارمة على هذه الصلاحية لضمان أمان النظام ومنع تنفيذ برامج ضارة أو عمليات غير مصرح بها.
إدارة: القدرة على إدارة وتعديل صلاحيات المستخدمين الآخرين.
صلاحية الإدارة تعني أن المستخدم لديه القدرة على إدارة وتعديل صلاحيات المستخدمين الآخرين في النظام.
يستطيع المستخدم الذي يحمل هذه الصلاحية تعيين وتغيير الصلاحيات والأذونات المختلفة للمستخدمين الآخرين، بما في ذلك الوصول إلى الموارد والمعلومات والوظائف المحددة.من خلال صلاحية الإدارة يمكن للمستخدم تعيين مستويات الوصول وتحديد الوظائف المتاحة لكل مستخدم، وتعديل الأذونات للتحكم في القدرات والصلاحية الإدارة تعني أن المستخدم لديه القدرة على إدارة وتعديل صلاحيات المستخدمين الآخرين في النظام.
من خلال صلاحية الإدارة يمكن للمستخدم تعيين مستويات الوصول وتحديد الوظائف المتاحة لكل مستخدم، وتعديل الأذونات للتحكم في القدرات والصلاحيات التي يمتلكها المستخدمون الآخرون.
على سبيل المثال:
يمكن للمستخدم الذي يحمل صلاحية الإدارة تعيين مستخدم كمشرف للنظام مع صلاحية الوصول الكاملة، بالإضافة إلى أنه يمكن لآخرين أن يكون لديهم صلاحيات محدودة تسمح لهم بالوصول إلى بعض الموارد والوظائف فقط.
يوفر إدارة الصلاحيات مستويات التحكم والأمان في النظام، حيث يمكن للمسؤولين تعيين الصلاحيات وفقًا لاحتياجات المؤسسة أو المنظمة، وهذا يساعد في حماية المعلومات الحساسة ومنع الوصول غير المصرح به.
توجد أدوات وأنظمة إدارة متعددة تسمح بإدارة وتعديل صلاحيات المستخدمين في النظام، مثل أنظمة إدارة قواعد البيانات وأنظمة إدارة الشبكات وأنظمة إدارة الوصول.
تقارير: القدرة على عرض وإنشاء تقارير عن حالة النظام والبيانات.
صلاحية التقارير تعني أن المستخدم لديه القدرة على عرض وإنشاء تقارير عن حالة النظام والبيانات المتعلقة به.
، من خلال هذا النموذج يمكنك للمستخدم استخدام هذه الصلاحية للوصول إلى معلومات مفصلة حول أداء النظام والبيانات المخزنة فيه.
على سبيل المثال:
إذا كان لدى المستخدم صلاحية التقارير في نظام إدارة قاعدة البيانات، فإنه يمكنه عرض تقارير حول حالة قواعد البيانات المختلفة، مثل القدرة الحالية المستخدمة، وحالة الأداء، وتوزيع البيانات، وغيرها. ويمكن أيضًا للمستخدم استخدام هذه الصلاحية لإنشاء تقارير مخصصة لتحليل البيانات أو مراقبة حالة النظام بشكل دوري.
صلاحية التقارير عادةً ما تمنح للمستخدمين الذين يحتاجون إلى مراقبة وتحليل حالة النظام والبيانات. يتم استخدام تقارير لاتخاذ قرارات استراتيجية وتحسين أداء النظام واكتشاف القضايا الحالية أو المحتملة.
يتم توفير صلاحية التقارير بحذر وفقًا لسياسات الأمان والخصوصية لضمان أن المعلومات الحساسة لا تصل إلى أي شخص غير مخول.
أولاً: إنشاء الجداول اللازمة لنظام الصلاحيات والمجموعات
1. نقوم بإنشاء أربعة جداول في قاعدة البيانات في الاكسس2. نقوم بتسمية كل جدول بحسب رغبتك، وتختار الاسم الذي تريد.
3. نقوم بإضافة حقول إلى الجداول مع إعادة تسمية كل حقل.
وياليت تقوم بتسمية الجداول والحقول بحسب المسميات هنا حتى لا تقع بخطأ في البرمجة في الدروس القادمة
وبعد الممارسة يمكنك التطبيق وإنشاء برنامج وقاعدة خاصة فيك.
جدول المستخدمين (tblUsers):
جدول المستخدمين (tblUsers): |
- User_Name (Primary Key):
اسم المستخدم ويجب أن يكون فريدًا لكل مستخدم.
- UserFullName: الاسم الكامل للمستخدم.
هذا الحقل يحتوي على اسم المستخدم ويجب أن يكون فريدًا لكل مستخدم.
ويمكن استخدامه كمفتاح أساسي للتعرف على كل مستخدم بشكل فريد.
User_PASS: كلمة المرور الخاصة بالمستخدم.
هذا الحقل يحتوي على كلمة المرور الخاصة بالمستخدم، ويتم تخزينه بشكل مشفر أو مشفر بشكل آمن لضمان سرية المعلومات.
PASS_Date: تاريخ انتهاء صلاحية كلمة المرور.
هذا الحقل يحتوي على تاريخ انتهاء صلاحية كلمة المرور. يمكن استخدامه لتحديد متى يجب على المستخدم تغيير كلمة المرور بناءً على تواريخ محددة.
PASS_C: عدد محاولات الدخول الفاشلة للمستخدم.
هذا الحقل يحتوي على عدد محاولات الدخول الفاشلة للمستخدم. يمكن استخدامه لتتبع عدد المحاولات الناجحة والفاشلة للدخول إلى النظام.
S_New:
مؤشر يحدد ما إذا كانت كلمة المرور جديدة ويجب تغييرها من قبل المستخدم.
هذا الحقل يحدد ما إذا كانت كلمة المرور الحالية للمستخدم جديدة وتحتاج إلى تغيير من قبل المستخدم.
Roll_ID:
معرّف المجموعة التي ينتمي إليها المستخدم.
هذا الحقل يحتوي على معرّف المجموعة التي ينتمي إليها المستخدم، ويفيد بتقسيم وتنظيم المستخدمين إلى مجموعات مختلفة وتعيين الصلاحيات والإذن المناسب لكل مجموعة.
New_User:
- مؤشر يحدد ما إذا كان المستخدم جديدًا وغير فعّال.
- هذا الحقل يحدد ما إذا كان المستخدم جديدًا وغير فعال.
جدول المجموعات (tblRolls):
جدول المجموعات (tblRolls) |
- Roll_ID (Primary Key):
هذا الحقل يحتوي على رقم المجموعة ويعمل كمفتاح أساسي لتحديد المجموعة بشكل فريد.
- Roll_Name:
هذا الحقل يحتوي على اسم المجموعة، ويتم استخدامه لتخزين اسم المجموعة بشكل واضح ووصفها.جدول المجموعات (tblRolls)
يستخدم لتعريف وتخزين المجموعات المختلفة في النظام.
مع العلم يمكن أن تكون هذه المجموعات تشمل مجموعات المستخدمين، أو مجموعات الصلاحيات، أو أي نوع آخر من التصنيفات المطلوبة في النظام الخاص بك.
جدول الشاشات (tblForms):
جدول الشاشات (tblForms): |
يستخدم لتعريف وتخزين الشاشات البرمجية في النظام، وتستطيع أن تجعل هذه الشاشات تشمل النماذج المختلفة، والصفحات، والواجهات الرسومية، أو أي شاشة أخرى تستخدم في التطبيق الخاص بك.
ويحتوي جدول الشاشات على الحقول التالية:
Form_Name (Primary Key):
هذا الحقل يحتوي على اسم الشاشة البرمجية (الفورم) ويعمل كمفتاح أساسي لتحديد الشاشة بشكل فريد.Form_ArName:
هذا الحقل يحتوي على اسم الشاشة باللغة العربية. يستخدم لتوفير اسم الشاشة باللغة العربية للمستخدمين.جدول صلاحيات الدخول (tblRollsAccess):
جدول صلاحيات الدخول (tblRollsAccess) |
جدول صلاحيات الدخول (tblRollsAccess) يستخدم لتعريف وتخزين صلاحيات الوصول للشاشات البرمجية في النظام بناءً على المجموعات.
ويتم استخدام هذا الجدول لتعيين صلاحيات محددة لكل مجموعة، بحيث يمكن أن تتمتع المجموعات المختلفة بصلاحيات الوصول إلى الشاشات المطلوبة وفقًا لاحتياجات التطبيق.
- Roll_ID (Primary Key):
عزيزي القارئ يحتوي هذا الحقل على رقم المجموعة ويتم تفعيل مفتاح أساسي للحقل.- Form_Name (Primary Key):
هذا الحقل يحتوي على اسم الشاشة البرمجية (الفورم) ويعمل كمفتاح أساسي لتحديد الشاشة.- HasAccess:
- هذا الحقل يحدد ما إذا كان لدى مستخدمي المجموعة صلاحية الوصول إلى الشاشة أم لا.
- يمكن أن تكون القيمة "نعم" أو "لا" لتحديد حالة الصلاحية.
ثانياً: عمل نموذج إدارة المستخدمين:
لإضافة نموذج جديد في Microsoft Access يمكنك اتباع الخطوات التالية:2. في عرض قاعدة البيانات، انقر فوق علامة التبويب "إنشاء" (Create) في الشريط العلوي.
3. ستظهر مجموعة من الخيارات. انقر على "نموذج" (Form) في قسم النماذج (Forms).
4. ستظهر لك مجموعة من النماذج الجاهزة للاختيار من بينها.
وتستطيع أيها القارئ العزيز اختيار أي نموذج يناسب احتياجاتك واستخدامه كنقطة انطلاق، أو يمكنك اختيار النموذج الفارغ (Blank Form) لإنشاء نموذج جديد بدون تنسيق مسبق.
5. بمجرد اختيارك للنموذج ستظهر لك شاشة التصميم للنموذج.وهناك أدوات التصميم المتاحة في شريط الأدوات لإضافة أزرار وحقول نص وقوائم منسدلة وغيرها من العناصر تستطيع إضافة ما تريد حسب رغبتك.
7. بعد إنشاء النموذج وتخصيصه وفقًا لاحتياجاتك، قم بحفظ النموذج عن طريق النقر فوق زر "حفظ" (Save) في الشريط العلوي.
هنا في سيتم طلب منك تحديد اسم النموذج وموقع حفظه.
9. يمكنك الآن استخدام النموذج الجديد في قاعدة البيانات الخاصة بك لإدخال واستعراض البيانات.
انتهينا من عمل نموذج جديد ونبدأ بعملية التصميم للنموذج كما هو موضح لكم في الصورة
وسيتم شرح الأكواد حتى يستفيد منها الجميع بالرغم أنها أكواد أساسية وبدائية ويفترض أنها بسيطة والكل لديه معرفة بها
لنبدأ![]() |
عمل نموذج إدارة المستخدمين |
1. الاسم البرمجي لتكستبوكس USERNAME هو (txtID).
2. الاسم البرمجي لتكستبوكس EMPLOYEE NAME هو (txtname).وكما تم الشرح سابقاً بأنه يمكنك عمل أي اسم تريده ولأي حقل تحب ولا يلزم أن تلتزم بهذه المسميات
ولكني أرى عند تطبيقك ومتابعتك للدرس يجب عليك أن تكتب المسميات كماهي حتى لا يحدث لديك أي خطأ عند عملية البرمجة.
بعد أن قمنا بتصميم الشاشة كما هو واضح أمامكم في الصورة الان نبدأ بعملية إضافة الأكواد والأوامر
كود زر البحث الذي بجانب تيكست بوكس USERNAME :
يسمح لك هذا الكود بالتحقق من وجود اسم المستخدم قبل اضافته في قاعدة البيانات.If Me.txtID.Value <> "" ThenDim rst As RecordsetSet rst = CurrentDb.OpenRecordset("SELECT * FROM tblUsers WHERE User_Name = '" & Me.txtID.Value & "'")If rst.RecordCount = 0 ThenMsgBox "NO DATA", vbCritical, "Ok"ElseARname = rst!UserFullNameMe.txtname.Value = ARnameMe.btnsearch.Enabled = TrueMe.btnsavenew.Enabled = FalseEnd IfElseMsgBox "Please Enter USERNAME First", vbCritical, "Error"End If
2. كود زر ADD NEW:
يقوم هذا الزر بتفريغ البيانات لاضافة مستخدم جديد
Me.txtID.Value = ""Me.txtname.Value = ""Me.btnsearch.Enabled = TrueMe.btnsavenew.Enabled = True
3. كود زر SAVE :
مهمة هذا الزر وعمله هو لعمل الحفظ لبيانات المستخدم التي قمنا بكتابتها
Dim StrSQL As StringIf Me.txtID.Value <> "" And Me.txtname.Value <> "" ThenStrSQL = "INSERT INTO tblUsers (User_Name,UserFullName,New_User) VALUES ('" & Me.txtID.Value & "','" & Me.txtname.Value & "',True );"DoCmd.SetWarnings FalseDoCmd.RunSQL StrSQLDoCmd.SetWarnings TrueMsgBox "User Addedd Successfully", vbInformation, "MSG"MsgBox "Please Fill all Data First", vbCritical, "error"ElseEnd If
أما ماهو ظاهر لنا بالنسبة لزر USERS LIST فهو لعرض قائمة ببيانات المستخدمين المسجلين لدينا في قاعدة البيانات.
![]() |
USERS LIST |
شاشة تعديل بيانات المستخدمين (FRM_EditUsers):
![]() |
تعديل بيانات المستخدمين |
من خلال هذه الشاشة يمكنك تعديل بيانات المستخدمين وتصنيفهم ضمن مجموعات وتحديد صلاحيات المجموعات لاحقاً الادوات المتوفرة في هذه الشاشة (هنا لا أتحدث عن Labels انها الادوات الموجود بجنبها)
تيكستبوكس USERNAME :اسمه البرمجي (txtID):
- يتم ادخال اسم المستخدم هنا.
- زر البث الذي بجانب اسم المستخدم:
- يتم الضغط عليه بعد ادخال اسم المستخدم وذلك لجلب بيانات المستخدم وعرضها في الفورم.
الكود البرمجي للزر:
If Me.txtID.Value <> "" ThenDim rst As RecordsetSet rst = CurrentDb.OpenRecordset("SELECT * FROM tblUsers WHERE User_Name = '" & Me.txtID.Value & "'")If rst.RecordCount = 0 ThenMsgBox "NO DATA", vbCritical, "error"Me.txtID.SetFocusElseARname = rst!UserFullNamepass = rst!User_PASSPassCount = rst!PASS_COUNTRoll_ID = rst!Roll_IDMe.txtname.Value = ARnameMe.txtpass.Value = passMe.txtpasscount.Value = PassCountMe.cbxRollId.Value = Roll_IDMe.btnsearch.Enabled = TrueMe.txtpass.Enabled = FalseMe.txtID.Enabled = FalseMe.btnsave.Enabled = TrueEnd IfElseMsgBox "Please Select USERNAME First", vbCritical, "error"Me.txtID.SetFocus end if
EMPLOYEE NAME:
اسمه البرمجي (txtname): يعرض الاسم الكامل للمستخدم.
PASSWORD:
اسمه البرمجي (txtpass): هنا كلمة المرور للمستخدم ويجب ان يكون Input Mask لها من نوع Password.
زر المفتاح الذي بجانب PASSWORD:
عند جلب بيانات المستخدم يقوم البرنامج تلقائيا بإلغاء تفعيل تيكستبوكس كلمة المرور لمنع تعديلها دون علم المستخدم ومهمة هذا الزر السماح للمدير بتعديل كلمة المرور وفي نفس الوقت سيخزن في قاعدة البيانات ان كلمة المرور لهذا المستخدم تم تعديلها وسيطلب من المستخدم تغييرها من طرفه فور دخوله للبرنامج.
الكود الرمجي للزر:
Me.txtpass.Enabled = TrueMe.txtpass.Value = ""Me.txtpass.SetFocus
LOGIN ATTEMPTS:
كوده البرمجي (txtpasscount) هو عداد لمحاولة الدخول الفاشلة للمستخدم وذلك لمنع المستخدم من المحاولة مرة اخرى بعد عدد محدد من المحاولات سيتم تحديد هذا العدد لاحقا في شاشاة تسجيل الدخول.
(lblStstus) يستخدم لعرض حالة المستخدم.
زر Activate: لتفعيل المستخدم المختار
If Me.lblStstus.Visible = True ThenDim dbs As dao.DatabaseDim qdf As QueryDefSet dbs = CurrentDbdbs.Execute "UPDATE tblUsers SET New_User= false WHERE User_Name= '" & Me.txtID.Value & "'"MsgBox "Activated Successfully", vbInformation, "MSG"Me.lblStstus.Caption = "Active"Me.btnActive.Enabled = FalseMe.btnStop.Enabled = TrueEnd If
زر Block:
لإيقاف المستخدم المختار.
كود الزر:If Me.lblStstus.Visible = True ThenDim dbs As dao.DatabaseDim qdf As QueryDefSet dbs = CurrentDbdbs.Execute "UPDATE tblUsers SET New_User= True WHERE User_Name= '" & Me.txtID.Value & "'"MsgBox "Blocked Successfully", vbInformation, "MSG"Me.lblStstus.Caption = "Blocked"Me.btnActive.Enabled = TrueMe.btnStop.Enabled = FalseEnd If
شاشة تفعيل/ايقاف المستخدمين (FRM_USERSACTIVATION):
(FRM_USERSACTIVATION):
بعد انشاء المستخدم لأول مرة تكون حالة المستخدم غير فعال ولا يمكنه تسجيل الدخول الا بعد تفعيله من خلال هذه الشاشة. ويمكن إيقاف او تفعيل أي مستخدم لاحق من خلال هذه الشاشة.
تيكستبوكس USERNAME:
اسمه البرمجي (txtID) يتم إضافة اسم المستخدم المراد تفعيله/إيقافه هنا.
زر البحث:
يقوم بجلب وعرض حاله المستخدم المدخل.كود الزر:
If Me.txtID.Value <> "" Then
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM tblUsers WHERE User_Name = '" & Me.txtID.Value & "'")
If rst.RecordCount = 0 Then
MsgBox "User Not Exist", vbCritical, "Warning"
Else
IS_NEW = rst!New_User
If IS_NEW = True Then
Me.lblStstus.Visible = True
Me.lblStstus.Caption = "Blocked"
Me.btnActive.Enabled = True
Me.btnStop.Enabled = False
Else
Me.lblStstus.Visible = True
Me.lblStstus.Caption = "Active"
Me.btnActive.Enabled = False
Me.btnStop.Enabled = True
(Label)USER STATUS:
اسمه البرمجي (lblStstus) يستخدم لعرض حالة المستخدم.
زر Activate:
لتفعيل المستخدم المختار.
كود الزر:If Me.lblStstus.Visible = True Then
Dim dbs As dao.Database
Dim qdf As QueryDef
Set dbs = CurrentDb
dbs.Execute "UPDATE tblUsers SET New_User= false WHERE User_Name= '" & Me.txtID.Value & "'"
MsgBox "Activated Successfully", vbInformation, "MSG"
Me.lblStstus.Caption = "Active"
Me.btnActive.Enabled = False
Me.btnStop.Enabled = True
End If
زر Block:
لايقاف المستخدم المختار.
كود الزر:
StrSQL As If Me.lblStstus.Visible = True Then
Dim dbs As dao.Database
Dim qdf As QueryDef
Set dbs = CurrentDb
dbs.Execute "UPDATE tblUsers SET New_User= True WHERE User_Name= '" & Me.txtID.Value & "'"
MsgBox "Blocked Successfully", vbInformation, "MSG"
Me.lblStstus.Caption = "Blocked"
Me.btnActive.Enabled = True
Me.btnStop.Enabled = False
End If
![]() |
برمجة شاشات إضافة وإدارة المجموعات |
ثالثاً: برمجة شاشات إضافة وإدارة المجموعات برمجة شاشات إضافة وإدارة المجموعات
1. شاشة الوظائف (أسماء الشاشات المتوفرة في البرنامج) (FRM_Functions) في هذه الشاشة يتم إضافة أسماء الشاشات التي سيتم منح او منع صلاحيات الدخول اليها لاحقا.
تيكستبوكس FUNCTION CODE:
اسمه البرمجي (txtFromName) يتم هنا إضافة اسم الفورم البرمجي كما تم تسميته لديك في البرنامج.
تيسكتبوكس FUNCTION NAME:
اسمه البرمجي (txtArName) يتم هنا كتابة اسم الفورم او الشاشة باللغة العربية او اي اسم ليساعدك على التعرف على الشاشة المقصودة.
زر SAVE:
لحفظ البيانات في قاعدة البيانات.
كود الزر:
Dim StrSQL As String
Dim DatDiff As Integer
If Me.txtFromName.Value <> "" And Me.txtArName.Value <> "" Then
StrSQL = "INSERT INTO tblForms VALUES ('" & Me.txtFromName.Value & "','" & Me.txtArName.Value & "');"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
MsgBox "Successfully Saved", vbInformation, "MSG"
Me.QUR_FUNCTIONS_subform.Requery
Me.txtArName.Value = ""
Me.txtFromName.Value = ""
Me.txtArName.SetFocus
Else
MsgBox "Please Fill all Data First", vbCritical, "Error"
Me.txtArName.SetFocus
End If
أسفل الفورم كما نشاهد هناك قائمة بأسماء الشاشات المدخلة في قاعدة البيانات، تقوم بعرض ومشاهدة أسماء نماذج الشاشات التي تم إضافتها إلى قاعدة البيانات ليسهل على المستخدم عملية الحذف من خلال تلك الشاشة.
2. شاشة منح/ الغاء صلاحيات الدخول على البرنامج (FRM_ROLLSACCESS)
- كومبوبكس Select Roll:
اسمه البرمجي (cbxroll): ويتم تعبئته بكافة المجموعات المدخلة في جدول (tblRolls).
- كومبوبكس Select Function: اسمه البرمجي(cbxform)
نقوم بعملية إدخال البيانات وبكافة أسماء الشاشات في جدول (tblForms).
- زر Veiw Roll Currect Functions:
عمل هذا الرمز هو عرض الشاشات للمستخدم بحسب الصلاحيات الممنوحة في قاعدة البيانات.
- Me.QUR_RollsAccess_subform.Requery
زر Give Access: لمنح صلاحية الدخول للشاشة المختارة للمجموعة المحددة.
Dim StrSQL As String
If Me.cbxroll.Value <> "" And Me.cbxform.Value <> "" Then
StrSQL = "INSERT INTO tblRollsAccess VALUES (" & Me.cbxroll.Value & ",'" & Me.cbxform.Value & "',True );"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
MsgBox "Roll have Access Now", vbInformation, "MSG"
Me.QUR_RollsAccess_subform.Requery
Else
MsgBox "Please Fill All Data First", vbCritical, "Error"
End If
انشاء شاشة تسجيل الدخول: |
رابعاً: شاشة تسجيل الدخول:
هذا النموذج يعتبر هو الأهم بالنسبة لتسجيل الدخول إلى قاعدة البيانات وله ارتباطات مع الجداول وسيتم شرحها لاحقاً.
وسيتم ضبط قاعدة البيانات بأنه عندما يتم فتحها يظهر هذا النموذج ويطلب من المستخدم تسجيل الدخول ويطلب منه اسم المستخدم وكلمة المرور
محتويات الشاشة:
- تيكستبوكس اسم المستخدم:
اسمه البرمجي (txtUserName):لادخال اسم المستخدم
- تيكستبوكس كلمة المرور:
اسمه البرمجي (txtPassowrd): لإدخال كلمة المرور
- (Label) اسم المستخدم غير صحيح اسمها البرمجي (lblUserError):
- (Label) كلمة المرور غير صحيحة اسمها البرمجي (lblPassError):
- زر دخول: اسمه البرمجي (btnLogin): لتسجيل الدخول للبرنامج.
بالنسبة للأكواد سيتم شرحها كالتالي:
كود الزر:
Dim RS As Recordset
Dim db As dao.Database
'==================\
Dim dbs As dao.Database
Dim qdf As QueryDef
Set dbs = CurrentDb
'===================
Set db = CurrentDb
Set RS = db.OpenRecordset("tblUsers", dbOpenSnapshot, dbReadOnly)
RS.FindFirst "User_Name ='" & Me.txtUserName & "'"
If Me.txtUserName.Value <> "" And Me.txtPassowrd.Value <> "" Then
If RS!New_User = True Then
MsgBox "ÇäÊåÊ ÝÊÑÉ ÕáÇÍíÉ ÇáãÓÊÎÏã", vbCritical, "ÊäÈíå"
Exit Sub
End If
If RS.NoMatch = True Then
Me.lblUserError.Visible = True
Me.txtUserName.SetFocus
Exit Sub
End If
Me.lblUserError.Visible = False
If RS!PASS_COUNT >= 3 Then
MsgBox "ÊÌÇæÒ ÚÏÏ ãÍÇæáÇÊ ßáãÉ ÇáãÑæÑ", vbCritical, "ÊäÈíå"
Exit Sub
End If
If RS!User_PASS <> Me.txtPassowrd Then
Me.lblPassError.Visible = True
dbs.Execute "UPDATE tblUsers SET PASS_COUNT= PASS_COUNT + 1 WHERE User_Name= '" & Me.txtUserName.Value & "'"
Me.txtUserName.SetFocus
Exit Sub
End If
Me.lblPassError.Visible = False
TempVars("Roll_ID") = RS!Roll_ID.Valu
TempVars("User_Name") = RS!User_Name.Value
TempVars("UserPass") = RS!User_PASS.Value
If RS!IS_NEW = False Then
dbs.Execute "UPDATE tblUsers SET PASS_COUNT= 0 WHERE User_Name= '" & Me.txtUserName.Value & "'"
DoCmd.OpenForm "MFRM_MAINFORM"
Else
DoCmd.OpenForm "FRM_PasswordChange"
End If
DoCmd.Close acForm, Me.Name
شــــــرح الأكــــــــــواد.
يرجى التركيز والانتباه لهذه الأكواد وسيتم شرحها كالتالي:
If RS!PASS_COUNT >= 3 Then
MsgBox "تجاوو عدد محاولات الدخول", vbCritical, "تنبيه"
Exit Sub
الكود السابق يعتبر هو المسؤول عن منع الدخول الى قاعدة البيانات في حالة شرط وهو أن المستخدم قام بمحاولات عديدة بكلمات مرور خاطئة وكما هو موضح في الكود
If RS!PASS_COUNT >= 3 Then
MsgBox "الرسالة"
Else
DoCmd.OpenForm "FRM_PasswordChange"
رقم 3 ويعني عدد المحاولات ويمكنك تغيير الرقم الذي يناسبك.
في حالة أن المستخدم جديد وليس له حساب أو اسم مستخدم ولا كلمة مرور، ويعتبر أول مرة ويريد تسجيل بياناته في قاعدة البيانات أو في حالة تم تغيير كلمة المرور الخاصة بالمستخدم.
تغيير كلمة المرور |
Old Password : اسمه البرمجي (txtOldPass): يتم ادخال كلمة المرور القديمة المراد تغييرها.
New Password: اسمه البرمجي (txtNewPass): يتم ادخال كلمة المرور الجديدة.
New Password: اسمه البرمجي (txtReNewPass): يتم ادخال كلمة المرور الجديدة.
زر Change:
لتنفيذ الامر وتغيير كلمة المرور.
كود الزر:
Dim dbs As dao.Database Dim dbs As dao.DatabaseDim qdf As QueryDefSet dbs = CurrentDb If Me.txtOldPass.Value = TempVars("UserPass") Then If Me.txtNewPass.Value = Me.txtReNewPass.Value ThenIf Me.txtNewPass.Value <> "" And Me.txtOldPass.Value <> "" And Me.txtReNewPass.Value <> "" Then dbs.Execute "UPDATE tblUsers SET User_PASS= '" & Me.txtNewPass.Value & "',IS_New=False WHERE User_Name= '" & TempVars("User_Name") & "'" MsgBox "تكتب النص الذي تريد", vbInformation, "ÑÓÇáÉ" DoCmd.Close acForm, Me.Name DoCmd.OpenForm "FRM_LOGIN"Else MsgBox "تكتب النص الذي تريد", vbCritical, "ÊäÈíå" End If Else MsgBox "تكتب النص الذي تريد", vbCritical, "ÊäÈíå" End If Else MsgBox "تكتب النص الذي تريد ", vbCritical, "ÊäÈíhttp://å" End If
خامساً: تطبيق نظام الصلاحيات
بعد أن قمنا سوياً بتجهيز جميع الأمور والأشياء الخاصة بنظام الصلاحيات، نأتي الان إلى تطبيق النظام على البرنامج، لكن لن يعمل حالياً النظام بشكل صحيح، ولكن يمكننا إضافة أكواد ليتم عمل البرنامج بشكل صحيح.
1. انشاء (Module):
لكي يتم التحقق من وجود صلاحية للمستخدم للدخول الى شاشات البرنامج المختلفة يجب انشاء مديول خاص يقوم بعملة الفحص والتحقق. كود المديول:
Public Function UsersAccess(Form_Name As String) As BooleanUsersAccess = Nz(DLookup("HasAccess", "tblRollsAccess", "Roll_ID = " & TempVars("Roll_ID") & " AND Form_Name = '" & Form_Name & "'"), False)
End Function
2. تطبيق نظام الصلاحيات:
الان بدل من استخدام الكود العادي التالي لفتح شاشات البرنامج:
DoCmd.OpenForm
"FRM_LOADSETTSUB"
يتم استبداله بالكود التالي مع تغيير اللون الاحمر باسم الفورم الخاص بك:
If Globals.UsersAccess("FRM_LOADSETTSUB") = False Then
MsgBox "You do not have Permission to Access this Functionality", vbCritical, "Warning"
Else"DoCmd.OpenForm "FRM_LOADSETTSUBEnd If
يمكنك الآن تحميل ملف الشرح بالضغط على الأيقونة أدناه
نتشرف بتعليقاتكم ووضع آرائكم