التحكم بصلاحيات المستخدمين لكل نموذج او تقرير بشكل مستقل في مايكروسوفت اكسس مع مثال عملي
1- انشاء جدول للمستخدمين يحتوي على رقم واسم المستخدم وكلمة المرور (ونوعهما نص قصير)
يمكنكم مشاهدة الفيديو او الاستمرار في قرأة الموضوع
3- انشاء نموذج للدخول الى قاعدة البيانات وليكن باسم Login
عندما يقوم المستخدم بادخال اسم وكلمة مرور صحيحين يقوم البرنامج بفتح لوحة التحكم او النموذج الرئيسي للعمل كما يقوم بتسجيل رقم المستخدم في المتغير usrID الذي تم تعريفة في الموديل (الموجود في الخطوة 4)
عندما يقوم المستخدم بادخال اسم وكلمة مرور صحيحين يقوم البرنامج بفتح لوحة التحكم او النموذج الرئيسي للعمل كما يقوم بتسجيل رقم المستخدم في المتغير usrID الذي تم تعريفة في الموديل (الموجود في الخطوة 4)
للمزيد يمكن الرجوع الى موضوع انشاء نموذج للدخول الى قاعدة البيانات (انقر هنا) ، ونقوم باضافة جميع الحقول الخاصة بالصلاحيات الية في تذييل النموذج ونجعل التذييل مخفي
4- انشاء دالة يتم استدعاؤها عند فتح اي نموذج نريد ان نضيف له الصلاحيات ( او ادراج كود الصلاحيات في النموذج بشكل مباشر بدون انشاء الدالة
VBA
Public usrID As Integer ' سنستخدم هذا المتغير للاحتفاظ برقم المستخدم
Public Function Privilege(frm As Form)
'------------------------------------------------------------------------------------
'االتاكد من صلاحية اضافة سجل وتفعيلها او تعطيلها
If DLookup("cadd", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("cadd", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowAdditions = False
End If
'االتاكد من صلاحية حذف سجل وتفعيلها او تعطيلها
If DLookup("cdell", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("cdell", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowDeletions = False
End If
'االتاكد من صلاحية تعديل سجل وتفعيلها او تعطيلها
If DLookup("CEdit", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("CEdit", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowEdits = False
End If
End Function
Public Function Privilege(frm As Form)
'------------------------------------------------------------------------------------
'االتاكد من صلاحية اضافة سجل وتفعيلها او تعطيلها
If DLookup("cadd", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("cadd", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowAdditions = False
End If
'االتاكد من صلاحية حذف سجل وتفعيلها او تعطيلها
If DLookup("cdell", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("cdell", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowDeletions = False
End If
'االتاكد من صلاحية تعديل سجل وتفعيلها او تعطيلها
If DLookup("CEdit", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'") = False Or IsNull(DLookup("CEdit", "TblPrivilege", "StUser=" & usrID & "AND StForm ='" & frm.Name & "'")) Then
frm.AllowEdits = False
End If
End Function
نعود الى النماذج التي نريد تطبيق الصلاحيات عليها وعند فتح النموذج نقوم باستدعاء الدالة Privilege التي انشأناها بالكود التالي
VBA
Private Sub Form_Open(Cancel As Integer)
Call Privilege(Me)
End Sub
Call Privilege(Me)
End Sub
السلام عليكم كيف استدعي اسم المستخدم Public usrID As Integer في فاتورة
ردحذفبارك الله فيك أخي على الدرس الأكثر من الرائع
ردحذفالسلام عليكم ورحمه الله وبركاته، أخى لكريم شكراً لمجهودك، لكن أنا مش عارف أجيب منين Table "MsysObject"، أرجو الأجابة وشكراً لمجهودك الكريم
ردحذفجزاك الله خير على الشرح الممتاز
ردحذفوكذلك يجيزك خير انك ارفقة المثال
الله يجزاك كل خير علي الشرح الوافي منذ متي وانا ابحث عن تلك الموضوع وان سمحت لي سؤال يارب يارب تتذكرني وتضع لي الاجابة
ردحذفكيف يمكن عمل الكود في الوحدة النمطية لخاصية الفتح
وعملت رسالة بعدم الفتح مثل ما حضرتك اشرت ولكنه يفتح
اريد معرفة كود فتح او عدم فتح النموذج
ممكن شرح خاص للديلوك اب على الماكرو بنفس طريقه الكود حاولت ماضبطت معي
ردحذفممكن شرح خاص للديلوك اب على الماكرو بنفس طريقه الكود حاولت ماضبطت معي
ردحذفممكن شرح خاص للديلوك اب على الماكرو بنفس طريقه الكود حاولت ماضبطت معي
ردحذف