الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الصلاحيات في النموذج الفرعي

بدأه orphan94 في 21 يونيو 2011 · 8 رد · 1,388 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكيرام في المعهد المبارك

يوجد لدي نموذج 1 ( اساسي )

متصل بنموذج 2 ( فرعي )

ويوجد لدي مستخدمين

مستخدم 1

يمتلك صلاحيات كامله

مستخدم 2

post-69427-087003400 1308659673_thumb.jp

يمتلك صلاحيات لنموذج 1 ( الاساسي)

الفتح

اضافة

حيث يمتلك صلاحيات لنموذج 2 ( فرعي )

الفتح

اضافة

تعديل

حذف

============

مستخدم 3

post-69427-043623700 1308659692_thumb.jp

يمتلك صلاحيات لنموذج 1 ( الاساسي)

الفتح

الحذف

اضافة

تعديل

حيث يمتلك صلاحيات لنموذج 2 ( فرعي )

الفتح

اضافة

حين الدخول باسم المستخدم 2 كلمة المرور 2

استطيع ان افتح سجل جديد و ان افتح النموذج و اتصفح

ولا يمكنني التعديل او الحذف

ولكن امشكلة في النموذج الفرعي حيث تنطبق عليه جميع شروط النموذج الرئيسي

اي لا استطيع ان اقوم بتعديل عليه او الحذف بسبب الخصائص النموذج الرئيسي

و العكس في المستخدم 3

كيف يمكن الاستفاده من خاصية الصلاحيات

وتعديل عليها في النموذج الفرعي

اي بامكاني اعطاء النموذج الرئيسي خصائي و النموذج الفرعي خصائص اخره تختلف عنه

ارجو مساعدتي في هذا المثال المرفق

اي

صلاحيات لنموذج 1 ( الاساسي)

الفتح

اضافة

و صلاحيات لنموذج 2 ( فرعي )

الفتح

اضافة

تعديل

حذف

او العكس

ارجو المساعده اخواني الكيرام

t.zip

المرفقات
1.JPG2.JPG

تم تعديل هذه المشاركة بواسطة orphan94 في 21 يونيو 2011 في 15:41

#2

أخى الكريم

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

لكن بما انك سبقت و طلبتها

فاليك الكود بعد التعديل

لكن لاحظ

ان الكود يتم اضافته فى النموذج الرئيسى و لا يتم اضافة أى كود فى النموذج الفرعى

Dim SF As Control, strsbfrm As String
With MyUser
   If .GetAbility(Me.Name, OpenForm) Then
      Me.AllowAdditions = .GetAbility(Me.Name, Add)
      Me.AllowEdits = .GetAbility(Me.Name, Edit)
      Me.AllowDeletions = .GetAbility(Me.Name, Del)
      For Each SF In Me.Controls
        If SF.ControlType = acSubform Then
           'strsbfrm = SF.Form.Name
            strsbfrm = SF.SourceObject
           If Not IsNull(DLookup("FRM", "FRMS", "FRM = '" & strsbfrm & "'")) Then
            If .GetAbility(strsbfrm, OpenForm) Then
            SF.Form.AllowAdditions = .GetAbility(strsbfrm, Add)
            SF.Form.AllowEdits = .GetAbility(strsbfrm, Edit)
            SF.Form.AllowDeletions = .GetAbility(strsbfrm, Del)
            Else
            SF.SourceObject = ""
            SF.Visible = False
            End If
           Else
            SF.Form.AllowAdditions = Me.AllowAdditions
            SF.Form.AllowEdits = Me.AllowEdits
            SF.Form.AllowDeletions = Me.AllowDeletions
           End If
        End If
      Next
   Else
      MsgBox "ÚÝæÇð " & .UserName & "      " & vbCr & vbCr & "áíÓ áÏíß ÇáÕáÇÍíÉ áÝÊÍ åÐÇ ÇáäãæÐÌ", 0 + 16 + 1572864, "äÙÇã ÇáÕáÇÍíÇÊ"
      Cancel = True
   End If
End With

تم تعديل هذه المشاركة بواسطة Abo_Yossof في 21 يونيو 2011 في 19:43

1

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#3

بي يعطيك الف الف عافيه

اخي الكريمه

على المساعده

طلب بسيط

تم تعديل على الكود وهو تعديل الغه العربيه فقط

مع اضافه اسطر الاخير مع السطر الاول فقط لكي يكمل الكود

واعتذر على تعديل عليه

فقط لتسهيل على الجميع

Private Sub Form_Open(Cancel As Integer)
Dim SF As Control, strsbfrm As String
With MyUser
   If .GetAbility(Me.Name, OpenForm) Then
      Me.AllowAdditions = .GetAbility(Me.Name, Add)
      Me.AllowEdits = .GetAbility(Me.Name, Edit)
      Me.AllowDeletions = .GetAbility(Me.Name, Del)
      For Each SF In Me.Controls
        If SF.ControlType = acSubform Then
           'strsbfrm = SF.Form.Name
            strsbfrm = SF.SourceObject
           If Not IsNull(DLookup("FRM", "FRMS", "FRM = '" & strsbfrm & "'")) Then
            If .GetAbility(strsbfrm, OpenForm) Then
            SF.Form.AllowAdditions = .GetAbility(strsbfrm, Add)
            SF.Form.AllowEdits = .GetAbility(strsbfrm, Edit)
            SF.Form.AllowDeletions = .GetAbility(strsbfrm, Del)
            Else
            SF.SourceObject = ""
            SF.Visible = False
            End If
           Else
            SF.Form.AllowAdditions = Me.AllowAdditions
            SF.Form.AllowEdits = Me.AllowEdits
            SF.Form.AllowDeletions = Me.AllowDeletions
           End If
        End If
      Next
   Else
      MsgBox "عفوأ " & .UserName & "      " & vbCr & vbCr & "ليس لديك الصلاحية لفتح هذا النموذج", 0 + 16 + 1572864, "نظام الصلاحيات"
      Cancel = True
   End If
End With

سوال اخي الكريم

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

تم تعديل هذه المشاركة بواسطة orphan94 في 21 يونيو 2011 في 22:17

#4

هو ليس برنامج الصلاحيات

لكن هو دمج لبرنامج اضافات الاكسس مع الاداة الاخيرة الخاصة بتجهيز قاعدة البيانات

مع بعض التعديل و الاضافات

نسألكم الدعاء

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#5

عزيزي...

لدي شي ممائل في برنامج قمت بعمله مؤخرا

والفكرة كالتالي...

نموذج رئيس...نموذج فرعي...

الخدعة...عمل نسختين من النموذج الفرعي، كل واحدة بها شي محدد تريد لمستخدم معين ان يراه دون مستخدمين اخرين

مثلا

في برنامج العلامات، يوجد للمعلمين صلاحية الدخول الى العلامات في الفصل الثاني، مع منعهم من مشاهدة علامات الفصل الأول

فقمت بعمل نموذج فرعي به حقول الفصل الاول، ونموذج فرعي اخر به حقول الفصل الثاني

باستخدام الكود، وفحص نوع المستخدم "معلم" فان النموذج الفرعي يتغير ليكون فقط نموذج الفصل الثاني...

مثال محاسبي اوضح..

لديك برنامج يعمل عليه المحاسبة وشوؤون الموظفين، وطلب منك ان تمنع المحاسب من رؤية حقل رقم الهاتف او الهوية مثلا، وعرض حقول حساب الراتب..وطلب ان يكون العكس هو لشؤون الموظفين

اعمل نموذجين فرعيين لنفس الجدول، وقم بتغيير الكائن المصدر للنموذج الفرعي بالكود

مثال بالكود...

Text20 هو رقم يحدد الفصل الدراسي الحالي..في حال كونه 1 "الاول" يكون النموذج الفرعي Child0 في النموذج المراد فتحه MarksEntry هو علامات الفصل الاول..subAvgsS1...وهكذا...

Select Case Me.Text20
  Case Is = 1
    	DoCmd.OpenForm "marksentry" ', , , "[ClassID]=Forms![Login]![combo17] and [SubID] = Forms![login]![combo19]"
	Forms![marksentry].Child0.SourceObject = "subAvgsS1"
........للكود بقية...

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 22 يونيو 2011 في 23:51

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#6

بي يعطيك العافيه فكره جميله جدا

هل من الممكن ان تضع مثال لكي يكون واضح للجميع ولكي يتم تطبيق المثال و الاستفاده منه

وهل من الممكن تطبيق مثالك على المثال المرفق في المشاركه الاولى

لكي نستفيد منه بشكل كبير جدا جدا

تم تعديل هذه المشاركة بواسطة orphan94 في 23 يونيو 2011 في 02:17

#7

هذا يا عزيزي ما تمكنت منه في عجالة لانشغالي...

اختر المستخدم يتغير لك النموذج الفرعي الموجود..

تسطيع تطبيق الفكرة على اي صلاحيات تراها مناسبة...المهم هو تحديد الاستراتيجية العامة للامان في برنامجك

تحياتي

Database11.rar

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#8

ربي يعطيك العافيه

هل من الممكن تطبيق فكرتك ودمجها في المثال الموجود في المشاركه الاولى

#9

عزيزي الفاضل...

مثالي ابسط بكثير..وليس من الممكن بسهولة دمج فكرتين لا تربطهما صلة

حيث ان برنامج الصلاحيات يستخدم عنصر calss module هو المستخدم وله خصائص وصلاحيات..

اما مثالي فهو عبارة عن ابسط نظام للصلاجيات - لكنه فعال حتى الان - وما يميزه سهولة اضافة نماذج جديدة وصلاحيات جديدة بناء على تغيير بسيط جدا في الكود..

للعمل على مثالي لا تحتاج الى دمج شي.. كل ما عليك هو تحديد النماذج التي تريد عمل صلاحيات معينة عليها وتحديد مستوى المستخدم الذي تريد

تحياتي

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

مواضيع مشابهة