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

صلاحيات المستخدمين - مرفق مثال

مغلق
بدأه MAXXIN في 2 يوليو 2007 · 0 رد · 898 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1

هذا المثال يوضح كيف يمكن تحديد المستخدم الذي اضاف او عدل احد السجلات.

انتبه الى تصميم الجدول Rep حيث توجد به حقول خاصه لتسجيل اسم المستخدم

الذى قام باضافة سجل وكذا تاريخ اضافة هذا السجل ، بالاضافه الى اسم المستخدم

الذى قام بتعديل احد السجلات وكذا تاريخ تعديل هذا السجل.

------------------------------------------------------------------------------------------

ونظرا لأن النموذج RepAdd مبنى على الجدول المذكور ، فان تلك الحقول الاربعه منضمه

ايضا الى النموذج.

وهذا يجعل من السهل استخدام الاحداث المناسبه مع الاكواد المناسبه لتسجيل بيانات

بتلك الحقول المشار اليها.

------------------------------------------------------------------------------------------

عندما تفتح النموذج ، ستجد (الى اعلى اليمين) حقلين هما :

الحقل UserAdded ، ويتم ملئه باسم المستخدم الحالى الذى يقوم باضافة سجل جديد.

ويتم ملء هذا الحقل عن طريق حدث Before Insert للنموذج (أي حدث قبل الادخال)

وذلك بالكود :

[UserAdded] = CurrentUser

الحقل AddedDate ، وهذا لايحتاج الى استخدام حدث او كود لملئه. ذلك لأن القيمه الافتراضيه

لهذا الحقل فى تصميم الجدول Rep هى:

=Now()

وهذا يعنى انه عند اضاقة سجل جديد تضاف قيمة الوقت الحالى الى السجل ، تلقائيا.

و بديهى ان اجراء أي تعديل على السجل ، فيما بعد ، لن يؤثر على تلك القيمه.

لاحظ صيغة الوقت لهذا الحقل بالجدول وبالنموذج ، فهى كالانى :

yyyy/mm/dd hh:nn:ss ampm

وهذا يضمن دقة تسجيل التاريخ باليوم والساعه والدقيقه والثانيه.

------------------------------------------------------------------------------------------

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

الحقل UserMod ، ويتم ملئه باسم المستخدم الحالى الذى يقوم بتعديل سجل سابق.

ويتم ملء هذا الحقل عن طريق حدث On Dirty للنموذج (أي حدث قبل اجراء التعديل)

وذلك بالكود :

[UserMod] = CurrentUser

الحقل ModDate ، ويتم ملء هذا الحقل عن طريق حدث On Dirty للنموذج (نفس الحدث السابق)

وذلك بالكود :

[ModDate] = Now()

لاحظ صيغة الوقت لهذا الحقل بالجدول وبالنموذج ، فهى كالانى :

yyyy/mm/dd hh:nn:ss ampm

ان استخدام حدث On Dirty ، يضمن لنا انه سيتم تسجيل بيانات جديده (محل القديمه) بهذين

الحقلين كلما قام احد المستخدمين باجراء تعديل على سجل تم تعديله من قبل.

------------------------------------------------------------------------------------------

ماذا افعل ، الآن ، كى اختبر هذا المثال ؟

جميل!

بعد تحميل المثال المرفق ، وفك الضغط عنه ، قم بفتح الملف WhoAddedModifiedRecords

ولأن المثال خالى من البيانات ، افتح النموذج RepAdd ، وقم باضافة مندوب جديد.

اجعل كود المندوب 1001 (مثلا) ثم ادخل اسم المندوب واكمل بياناته.

ستلاحظ انه بمجرد ادخال كود المندوب ، يتم ملء الحقلين الموجودين الى اعلى اليمين ،

وهذا يتم نتيجة عمل حدث Before Insert المشار اليه سابقا.

الآن ، وبعد استكمال بيانات المندوب ، اضغط زر "اضافه" ، ثم ضع مؤشر الفأره فى صندوق البحث

واكتب الرقم 1001 (او كود المندوب الذى تمت اضافته) ثم اضغط مفتاح إنتر بلوحة المفاتيح.

ستظهر لك بيانات المندوب ، مره أخرى.

قم باجراء أي تعديل ترغبه ، وليكن التعديل هو ازالة علامة "صح" من امام بطاقة "مستمر" ، مثلا.

ماذا تلاحظ ؟

ستلاحظ ان الحقلين الى اعلى اليسار ، تم ملئهما.

وهذا يتم نتيجة عمل حدث On Dirty المشار اليه سابقا.

الآن ، قم باغلاق برنامج أكسس.

افتح قاعدة البيانات من جديد ، باسم مستخدم آخر ، وقم باستدعاء بيانات المندوب 1001 عن

طريق صندوق البحث.

عندما تعرض بيانات المندوب ، قم بعمل تعديل بها ، ثم انظر الى الحقلين باعلى اليسار.

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

------------------------------------------------------------------------------------------

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

WhoAddedModifiedRecords.rar

I'll Be Back

هذا الموضوع مغلق.

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