السلام عليكم...
في سنة 2009 طرحت موضوعاً لكيفية حفظ صلاحيا المستخدم في حقل واحد نوعه عددي (Integer) و كانت الفكرة تعتمد على معاملة العدد كسلسلة من البتات بحيث تمثل كل بت إحدى الصلاحيات في البرنامج. طبعاً بتلك الطريقة كان عدد الصلاحيات محدوداً بـ 32 أو 64 صلاحية. و قد نبهني أحد الإخوة حينها أنه يمكن استعمال حقل من النوع "مفكرة" (Memo) في Access أو ntext في SQL Server من أجل عدد غير محدود من الصلاحيات.
في المرفقات مشروع يتكون من وحدة برمجية باسم MManageAuthorities.bas تحتوي على الإجراءات اللازمة للتعامل مع الصلاحيات كسلسلة نصية (يتم تخزينها في حقل الصلاحية مع باقي بيانات المستخدم في قاعدة البيانات. حقل الصلاحية يكون من النوع "مفكرة" (Memo) في Access أو ntext في SQL Server) و نافذة لتجربة تلك الإجراءات.
يحتوي الكود على شرح بالعربي.
لاستعمال تلك الإجراءات في أي مشروع قم بإضافة الوحدة MManageAuthorities.bas إلى ذلك المشروع.
الإجراءات هي:
الإجراء GiveAuthority: لإعطاء إحدى الصلاحيات للمستخدم.
الإجراء RemoveAuthority: لإزالة إحدى الصلاحيات من المستخدم.
الإجراء GiveAllAuthorities: إعطاء كافة الصلاحيات للمستخدم.
الإجراء RemoveAllAuthorities: لإزالة كافة الصلاحيات من المستخدم.
الدالة UserHasAuthority: لمعرفة ما إذا كان المستخدم له إحدى الصلاحيات أم لا.
المرفق:
نرجو الاستفادة و السلام.