السلام عليكــم ورحمـة الله وبركاتــه ،،
احبائي رواد منتدانا الغالي
اقدم لكم مثال على انشاء نسخ متعددة للنموذج نفسه لنتمكن من عرض بيانات الموظف على النموذج وبيانات رئيسه المباشر على نسخة من هذا النموذج مع امكانية تعدد النسخ .
وهذا المثال يتكون من الآتي :
1: جدول الموظفين ( tblEmployee ) وبه الحقول التالية :
أ ـ رقم الموظف ( EmployeeId ) وهو المفتاح الرئيسي للجدول.
ب ـ اسم الموظف ( EmployeeName ).
ج ـ عنوان الموظف ( Address ).
د ـ الرئيس المباشر ( Supervisor )
ملاحظة : الحقل بالفقرة ( د ) هو ايضاً حقل رقم الموظف ولكنه خاص بالرقم الوظيفي لرئيس الموظف وسيكون من ضمن القيم الموجودة بحقل رقم الموظف وللتوضيح اكثر : لو فرضنا ان الرقم الوظيفي 2 هو لأحد الموظفين ورئيسه المباشر بنفس الجدول ( حيث انه احد الموظفين ايضاً ) ولكنه يحمل الرقم 4 فسيتم وضع الرقم 4 في حقل Supervisor للموظف رقم 2
2: نموذج الموظفين ( frmEmployee )
وهذا النموذج مبني على الجدول الوحيد لدينا مع تغيير نوع عنصر التحكم الخاص بحقل الرئيس المباشر الى مربع تحرير وسرد اسمه ComboSupervisor يعرض لنا اسم الرئيس المباشر بدلاً من رقمه وذلك بالتحكم في خصائصه.
الاكواد
1: في قسم التصريحات العامة للنموذج يتم تعريف متغير يمثل النموذج ( frmEmployee ) اسم هذا المتغير هو ( frmChild ) كالتالي:
Private frmChild As Form_frmEmployee
2: الكود بحدث عند النقر للزر الموجود بجانب مربع التحرير والسرد هو الخاص بعرض النسخ المتعددة للنموذج بناءً على قيمة مربع التحرير والسرد كالآتي:
If Not IsNull(Me!Supervisor) Then Set frmChild = New Form_frmEmployee With frmChild .Filter = "EmployeeID = " & Me!Supervisor .FilterOn = True .Caption = "الرئيس المباشر للموظف " & Me!FullName .Visible = True End With End If
شرح الكود
السطر الاول : بإستخدام If الشرطية سيتم التحقق من مربع التحرير والسرد فإذا كان يحمل قيمة ... اذأ
السطر الثاني : اذا سيتم تعيين قيمة للمتغير المعرف مسبقاً وستكون القيمة هي نموذج جديد او نسخة جديدة من نموذج الموظفين.
السطر الثالث : With هو امر يستخدم للإختصار في بعض الاحيان عند التعامل مع كائن معين بحيث لا يتكرر اسمه بالكود وهنا تم استخدامه مع النموذج النسخة.
السطر الرابع : يتم عمل تصفية للنموذج النسخة بناءً على رقم الموظف ولكن بمعيار وهو قيمة مربع التحرير والسرد .. اي ان هذه التصفية ستكون حسب رقم الموظف ولكن بحقل Supervisor
السطر الخامس : تشغيل عامل التصفية
السطر السادس : تغيير خاصية التسمية ( Caption ) او عنوان النموذج ليعرض جملة ( الرئيس المباشر للموظف ) اضافة الى اسم الموظف
السطر السابع : هو اظهار النموذج الإبن بتعيين القيمة ( نعم ) لخاصيته ( مرئي )
السطر الثامن : انهاء الامر With
السطر التاسع : انهاء الجملة الشرطية If
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ــــــــــ
طريقة عمل المثال :
عند فتح النموذج سيكون هناك زر امر بجانب مربع التحرير والسرد الذي يعرض اسم الرئيس المباشر وعند الضغط عليه سيتم فتح نسخة من النموذج لعرض بيانات هذا الرئيس ... مع امكانية فتح نسخة اخرى من النموذج الآخر في حالة وجود رئيس مباشر للرئيس المعروض بالنموذج الإبن
وسيتم اغلاق جميع النسخ بمجرد اغلاق النسخة الاصلية للنموذج وهو النموذج frmEmployee
اعتذر على الإطالة واترككم مع المثال عسى ان يكون به الفائدة
دمتم بود
اخوكم / يوسف احمد



