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

نموذج للصلاحيات لمنع التعديل بالنموذج الرئيس لشهر معين

بدأه كوماندير في 22 أكتوبر 2014 · 16 رد · 1,258 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام علسكم ورحمة الله وبركاته

 

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

 

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

 

المطلوب عمله :

 

في نموذج الصلاحيات UtilityFrm  اريد اضافة خانة اختيار امام كل شهر بحيث عندما تكون خانة الاختيار نعم يمنع المستخدم من تعديل بيانات النموذج الرئيس لهذا الشهر ...

StopModify‬.rar

#2

?????

#3

اخواني وللضروره ان كان ماطلبته مستحيلا :

فقد قمت باضافة حقل من نوع نعم / لا ، بجدول الطلبات واسمه StopMdfy

واضفت نموذجا فرعيا

 

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

 

واليكم المرفق

 

 

 

StopModify2‬.rar

#5

بصراحه اخي جعفر

 

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

#6

اخي جعفر ، اخواني اعضاء المنتدى جميعا

 

هل طريقتي هذه صحيحه ؟( كما بالمرفق التالي )

 

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

 وفي حدث في الحالي للنموذج ؟

 

StopModify3‬.rar

تم تعديل هذه المشاركة بواسطة كوماندير في 25 أكتوبر 2014 في 18:16

#7

وعليكم السلام :)

 

إذا فهمت طلبك صح ، فانت تريد:

في النموذج UtilityFrm تريد ادخال الشهر والسنة (September 2014 مثلا) ،

على اساس هذه الشهور ، تريد ان تمنع المستخدم من تغيير البيانات التابعة لهذا الشهر والسنة؟

 

هل فهمي صحيح ، وهل هناك شئ آخر يجب ان اعرفه قبل البدء ؟

 

 

جعفر

#8
jjafferr كتب:

وعليكم السلام :)

 

إذا فهمت طلبك صح ، فانت تريد:

في النموذج UtilityFrm تريد ادخال الشهر والسنة (September 2014 مثلا) ،

على اساس هذه الشهور ، تريد ان تمنع المستخدم من تغيير البيانات التابعة لهذا الشهر والسنة؟

 

هل فهمي صحيح ، وهل هناك شئ آخر يجب ان اعرفه قبل البدء ؟

 

 

جعفر

 

نعم اخي جعفر كان ولازال هذا ما اردته ، ولكن لعدم وجود حلا (عدا ماتفضلت به انت بمشاركتك رقم 4 ، ومع ذلك فهو لم يلبي احتياجي ، لان تحقق الشرط يوقف العمل تماما بالنموذج  تماما وهذا مالا اريده ، لانني مثلا احتاج لايقاف التعديلات حسب الشهر وحسب الشركه ، مثلا ( اعني احد الحقول) ) اضطررت لما فعلت بالمشاركه 6 ، وفضلت التحكم بكل سجل منفردا

تم تعديل هذه المشاركة بواسطة كوماندير في 25 أكتوبر 2014 في 20:22

#9

تفضل :)

 

عملت جدول فيه الحقول التالية: شهر ، سنه ، StopMdfy :

post-273849-0-10155300-1414257860_thumb.

 

 

وعند اختيارك للشهر والسنه التي لا تريد التغيير والحذف ان يتم في سجلاتها ، يجب عليك ان تختار StopMdfy من الجدول (لاحظ بان الشهر 10 لسنة 2014 تم اختياره من الجدول) ،

والكود التالي في النموذج ، على حدث الحالي ، يفعل المطلوب:

    
    Dim rst As DAO.Recordset
    
    Set rst = CurrentDb.OpenRecordset("Select * From tbl_StopMdfy")
    rst.MoveLast: rst.MoveFirst
    
    For i = 1 To rst.RecordCount
        
        If rst!StopMdfy = -1 And Month(Me.OrderDate) = rst!iMonth And Year(Me.OrderDate) = rst!iYear Then
            'Me.AllowAdditions = False
            Me.AllowDeletions = False
            Me.AllowEdits = False

            Exit Sub
        Else
            'Me.AllowAdditions = true
            Me.AllowDeletions = True
            Me.AllowEdits = True
        
        End If
        
        rst.MoveNext
    Next i
    
    rst.Close: Set rst = Nothing

جعفر

 

301.StopModify3‬.accdb.zip

1
#10

عمل ممتاز اخي جعفر

سوال : لم لم يعمل الكود على النموذج الفرعي كذلك اي على السجلات الفرعيه المرتبطه بالسجل الرئيس المحقق للشرط ؟

 

ولماذا استخدمت  rst!StopMdfy = -1   وليس   rst!StopMdfy =true

تم تعديل هذه المشاركة بواسطة كوماندير في 25 أكتوبر 2014 في 22:22

#11

لأن الفانوس السحري والجني اللي فيه ، لم يخبرني انك محتاج هذا :) ، واعتقد بأنك اكدته كذلك:

 

كوماندير كتب:

المطلوب عمله :

 

يمنع المستخدم من تعديل بيانات النموذج الرئيس لهذا الشهر ...

 

 

ولكن ، تحت أمرك ، اليك هذا الكود:)

    
    Dim rst As DAO.Recordset
    
    Set rst = CurrentDb.OpenRecordset("Select * From tbl_StopMdfy")
    rst.MoveLast: rst.MoveFirst
    
    For i = 1 To rst.RecordCount
        
        If rst!StopMdfy = -1 And Month(Me.OrderDate) = rst!iMonth And Year(Me.OrderDate) = rst!iYear Then
            'Me.AllowAdditions = False
            Me.AllowDeletions = False
            Me.AllowEdits = False
            'Me.DetailsSubFrm.Form.AllowAdditions = False
            Me.DetailsSubFrm.Form.AllowDeletions = False
            Me.DetailsSubFrm.Form.AllowEdits = False

            Exit Sub
        Else
            'Me.AllowAdditions = true
            Me.AllowDeletions = True
            Me.AllowEdits = True
            'Me.DetailsSubFrm.Form.AllowAdditions = True
            Me.DetailsSubFrm.Form.AllowDeletions = True
            Me.DetailsSubFrm.Form.AllowEdits = True
        
        End If
        
        rst.MoveNext
    Next i
    
    rst.Close: Set rst = Nothing

جعفر

1
#12

الف الف شكر اخي جعفر والعفو

 

بالمرفق التالي اكثر ايضاحا للمطلوب  :

 اولا : ماهي الفائدة من الحقل Auto_Date ؟

 

ثانيا : في نموذج الصلاحيات عند اختياري مثلا للشركه BB للشهر سبتمبر 2014 والــ StopMdfy  مفعله فالمطلوب :

 

  1. منع التعديل على سجلات هذه الشركه لهذا الشهر ، بما في ذلك منع اضافة سجلات لهذه الشركه ( فقط) في هذا الشهر ( فقط).
  2. عند محاولة التعديل على سجلات هذه الشركه لهذا الشهر بما في ذلك اضافة سجلات ، تظهر رساله تفيد بان سجلات هذه الشركه لهذا الشهر مقيدة ولايمكن التعديل عليها .

 

اليك المرفق ، وانظر لتعديلاتي:

StopModify4.rar

#13

الله يطول في عمرك اخوي :) ، انا قلت لك بصريح العبارة:

 

jjafferr كتب:

 

هل فهمي صحيح ، وهل هناك شئ آخر يجب ان اعرفه قبل البدء ؟

 

 

 

ولو مو قصدي ازعلك ، لكنك الله يسلمك ما اخبرتني بكل اللي تريد :(

 

كوماندير كتب:

 

ثانيا : في نموذج الصلاحيات عند اختياري مثلا للشركه BB للشهر سبتمبر 2014 والــ StopMdfy  مفعله فالمطلوب :

 

 

انت ابدا ما جبت طاري شركة :(

فكان سهل عمل البرنامج بجميع المتطلبات من البداية :)

 

يالله ، في المرة الجاية ان شاء الله خلي جميع المعطيات من البداية :)

 

 

كوماندير كتب:

 

ولماذا استخدمت  rst!StopMdfy = -1   وليس   rst!StopMdfy =true

 

المعادلتين بنفس المعنى ، وانا اسهل لي استعمل -1 و0 بدل True و False :)

 

 

كوماندير كتب:

 

 اولا : ماهي الفائدة من الحقل Auto_Date ؟

 

في جميع جداولي ، اخلي حقلين للبرنامج (مب للمبرمج) Auto_ID وهو AutoNumber لفهرسة السجلات و Auto_Date وهو بتاريخ Now وهو لحفظ الوقت الذي ينشأ به السجل الجديد ، وهما مفيدان جدا حتى للمبرمج ، واهم فائدة فيهما هو عندما تريد ان تنقل بياناتك من الاكسس الى SQL و MySQL مثلا ، فهما مطلوبين هناك :)

 

 

وتفضل ، هذا ما استطعت فعله للطلبين 1 و 2 :)

 

 

جعفر

301.1.StopModify4.accdb.zip

#14

جيد اخي جعفر 

 

لكن لو حدث وحصل خطا وادخلت شركه BB بتاريخ ما في شهر سبتمبر 2014 والــ StopMdfy  مفعله ، فلماذا يغلق النموذج قبل اغلاقه اريده ان يعطيني ( رسالة تنبيه بانه لايمكنني اضافة سجل لهذه الشركه في هذا الشهر عند ادخالي للشركه ثم التاريخ او العكس )

#15
كوماندير كتب:

فلماذا يغلق النموذج قبل اغلاقه اريده ان يعطيني ( رسالة تنبيه بانه لايمكنني اضافة سجل لهذه الشركه في هذا الشهر عند ادخالي للشركه ثم التاريخ او العكس )

 

 

انا رديت عليك قبل ان تسأل:

 

jjafferr كتب:

وتفضل ، هذا ما استطعت فعله للطلبين 1 و 2 :)

 

 

لم استطع ان استخدم رسالة التنبية (هذه حدود إمكانياتي :( ) ، لذلك عملت في النموذج خانة ذكرت فيها:

 

كوماندير كتب:

سجلات هذه الشركه لهذا الشهر مقيدة ولايمكن التعديل عليها .

 

 

جعفر

#16

عموما وبكل حال اعتذر عن خطأي في عدم ايضاح مشكلتي جيدا

 

واشكرك اخي على سعة صدرك وتحملك

 

 

ولازلت منتظرا محاولات بقية اخواني اعضاء المنتدى لحل معضلتي هذه

#17

حياك الله ، ولا يهمك :)

 

 

جعفر

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…