التحكم بصلاحيات المستخدمين في مايكروسوفت اكسس باكثر من طريقة مع مثال عملي مفصل

تحديد الصلاحيات لكل مستخدم بشكل منفصل في اكسس

عندما يتم تصميم برنامج سيستخدمة اكثر من شخص فلا بد من ان يكون لكل مستخدم مستوى صلاحية مختلف عن الاخر، ولتحديد الصلاحيات لكل مستخدم بشكل منفصل توجد اكثر من طريقة واليكم هذة الطريقة والتي اعتبرها من الطرق العملية جدا:

سيتم شرح الموضوع بطريقتين
يمكنكم مشاهدة الفيديو او الاستمرار بقرأة الموضوع


1-انشاء جدول للصلاحيات يحتوي على رقم الصلاحية واسم الصلاحية بالاضافة الى وصف للصلاحية

2- انشاء جدول للمستخدمين يحتوي على اسم المستخدم وكلمة المرور (ونوعهما نص قصير)  بالاضافة الى حقل من نوع قائمة منسدلة مرتبط بانواع الصلاحيات في جدول الصلاحيات

 3- انشاء نموذج للدخول الى قاعدة البيانات وليكن باسم Login

عندما يقوم المستخدم بادخال اسم وكلمة مرور صحيحين يقوم البرنامج بفتح لوحة التحكم او النموذج الرئيسي للعمل
للمزيد يمكن الرجوع الى موضوع انشاء نموذج للدخول الى قاعدة البيانات (انقر هنا) ، ونقوم باضافة جميع الحقول الخاصة بالصلاحيات الية في تذييل النموذج ونجعل التذييل مخفي 

4- انشاء دالة يتم استدعاؤها عند فتح اي نموذج نريد ان نضيف له الصلاحيات ( او ادراج كود الصلاحيات في النموذج بشكل مباشر بدون انشاء الدالة
Public Function Privilege(frm As Form)
'------------------------------------------------------------------------------------
'ملاحضة: قمنا باضافة حقول الصلاحيات الى نموذج الدخول وهذا النموذج
'سيبقى مفتوح في خلفية البرنامج وبالتالي سنستخدم حقول الصلاحيات الموجودة فية
' Lookupولمن يرغب ممكن استخدام دالة
'
'------------------------------------------------------------------------------------
'بخصوص مدير النظام لا توجد عليه اي موانع وبالتالي لا نضع عليه اي شروط
'بخصوص المستوى الاول فانه يتمتع بصلاحيات مسؤول النظام من حيث
'الاضافة او الحذف او التعديل وبالتالي لا نضع عليه اي شروط (حسب مثالنا الحالي)
'

'------------------------------------------------------------------------------------

'بما ان المستوى الرابع  (اخر مستوى ) هو اقل مستوى يتمتع بالصلاحيات فاننا نبدأ منه
'علما ان صلاحيات هذا المستوى هي عرض السجلات فقط حسب الشرح في جدول المستخدمين
If Form_FrmLogin.Privilegecase = 5 Then
    frm.AllowAdditions = False
    frm.AllowDeletions = False
    frm.AllowEdits = False
End If

'------------------------------------------------------------------------------------
'الان اذا كان المستخدم له صلاحيات المستوى الثالث
'علما ان صلاحيات هذا المستوى هي عرض وتعديل السجلات فقط حسب جدول المستخدمين

If Form_FrmLogin.Privilegecase = 4 Then
    frm.AllowAdditions = False
    frm.AllowDeletions = False
End If

'الان اذا كان المستخدم له صلاحيات المستوى الثاني
'علما ان صلاحيات هذا المستوى هي عرض وتعديل واضافة السجلات فقط حسب جدول المستخدمين

If Form_FrmLogin.Privilegecase = 3 Then
    frm.AllowDeletions = False
End If

'------------------------------------------------------------------------------------
End Function

نعود الى النماذج التي نريد تطبيق الصلاحيات عليها ونقوم باستدعاء الدالة Privilege التي انشأناها عند فتح النموذج بالكود التالي

Private Sub Form_Open(Cancel As Integer)
Call Privilege(Me)
End Sub

وممكن ان نضع كود اخر في حدث عند الفتح سيتاكد من ان المستخدم لديه صلاحية فتح نموذج المستخدمين او استخدام زر التقارير واذا لم تكن لديه هذة الصلاحية فانه سيتم اخفاء زر المستخدمين Command1 الموجود في النموذج اعلاة او تعطيل زر التقارير Command0 .
If Form_FrmLogin.ReportNotAllowed = True Then ' سيتم تعطيل زر التقارير اذا لم يكن للمستخدم الصلاحية الكافية
Command0.Enabled = False
End If

If Form_FrmLogin.UsersFormButton = True Then 'سيتم اخفاء زر المستخدمين اذا لم تكن للمستخدم الحالي صلاحية الدخول الى هذا النموذج
Command1.Visible = False
End If

وبنفس الطريقة يمكن ان نقوم بعمل صلاحية لكل مستخدم مختلفة تماما عن المستخدم الاخر




1- انشاء جدول للمستخدمين يحتوي على اسم المستخدم وكلمة المرور (ونوعهما نص قصير)  بالاضافة الى انواع الصلاحيات، وهنا يجب ان يتم فصل كل صلاحية بحقل مستقل ويكون نوع البيانات في هذه  الحقول (نعم / لا) كما في الصورة التالية


 2- انشاء نموذج للدخول الى قاعدة البيانات وليكن باسم Login

عندما يقوم المستخدم بادخال اسم وكلمة مرور صحيحين يقوم البرنامج بفتح لوحة التحكم او النموذج الرئيسي للعمل
للمزيد يمكن الرجوع الى موضوع انشاء نموذج للدخول الى قاعدة البيانات (انقر هنا) ، ونقوم باضافة جميع الحقول الخاصة بالصلاحيات الية في تذييل النموذج ونجعل التذييل مخفي 

3- انشاء النماذج التي سيتم العمل عليها ووضع الصلاحيات لها مثلا النموذج MAIN


4- انشاء دالة يتم استدعاؤها عند فتح اي نموذج نريد ان نضيف له الصلاحيات ( او ادراج كود الصلاحيات في النموذج بشكل مباشر بدون انشاء الدالة

Public Function Privilege(frm As Form)
'------------------------------------------------------------------------------------
'ملاحضة: قمنا باضافة حقول الصلاحيات الى نموذج الدخول وهذا النموذج
'سيبقى مفتوح في خلفية البرنامج وبالتالي سنستخدم حقول الصلاحيات الموجودة فية
' Lookupولمن يرغب ممكن استخدام دالة
'
'------------------------------------------------------------------------------------
'بخصوص مدير النظام لا توجد عليه اي موانع وبالتالي لا نضع عليه اي شروط
'بخصوص المستوى الاول فانه يتمتع بصلاحيات مسؤول النظام من حيث
'الاضافة او الحذف او التعديل وبالتالي لا نضع عليه اي شروط (حسب مثالنا الحالي)
'

'------------------------------------------------------------------------------------

'بما ان المستوى الثالث  (اخر مستوى ) هو اقل مستوى يتمتع بالصلاحيات فاننا نبدأ منه
'علما ان صلاحيات هذا المستوى هي عرض السجلات فقط حسب الشرح في جدول المستخدمين
If Form_FrmLogin.IsLevel3 = True Then
    frm.AllowAdditions = False
    frm.AllowDeletions = False
    frm.AllowEdits = False
End If

'------------------------------------------------------------------------------------
'الان اذا كان المستخدم له صلاحيات المستوى الثاني
'علما ان صلاحيات هذا المستوى هي عرض وتعديل السجلات فقط حسب الشرح في جدول المستخدمين

If Form_FrmLogin.IsLevel2 = True Then
    frm.AllowAdditions = False
    frm.AllowDeletions = False
End If

'------------------------------------------------------------------------------------
End Function

نعود الى النماذج التي نريد تطبيق الصلاحيات عليها ونقوم باستدعاء الدالة Privilege التي انشأناها عند فتح النموذج بالكود التالي

Private Sub Form_Open(Cancel As Integer)
Call Privilege(Me)
End Sub

وممكن ان نضع كود اخر في حدث عند الفتح سيتاكد من ان المستخدم لديه صلاحية فتح نموذج المستخدمين او استخدام زر التقارير واذا لم تكن لديه هذة الصلاحية فانه سيتم اخفاء زر المستخدمين Command1 الموجود في النموذج اعلاة او تعطيل زر التقارير Command0 .
If Form_FrmLogin.ReportNotAllowed = True Then ' سيتم تعطيل زر التقارير اذا لم يكن للمستخدم الصلاحية الكافية
Command0.Enabled = False
End If

If Form_FrmLogin.UsersFormButton = True Then 'سيتم اخفاء زر المستخدمين اذا لم تكن للمستخدم الحالي صلاحية الدخول الى هذا النموذج
Command1.Visible = False
End If

وبنفس الطريقة يمكن ان نقوم بعمل صلاحية لكل مستخدم مختلفة تماما عن المستخدم الاخر











هناك تعليقان (2):