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

الاضافة والتعديل والحذف والتحكم والصلاحيات

مغلقرائج
بدأه muslim-es في 27 أبريل 2003 · 73 رد · 6,876 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#51

والله ماذا أقول لكم يا إخواني :confused:

لقد سررت بهذه الكلمات وهذه الدعوات الصادقة من القلوب ، فأسأل الله

أن يحفظكم ويرعاكم ويسدد خطاكم ويجعلنا أخوة متحابين متكاتفين نعمل

كي نفيد بعضنا البعض ،،، لا للتباغض ولا للحقد ولا للحسد ، أسأل الله أن

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

يتعلم ويعلم غيره ،،،،،،،،،،،،،،،، :confused:

أبو عقيل (f)

المسلم من سلم الناس من لسانه ويده

#52

السلام عليكم

أولا : كما قلنا مشكور ابوعقيل على مشاركاتك وبرامجك المفيدة (ما شاء الله ) وبارك الله فيك ....

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

حيث ان وقت عمل البرنامج ياخذ الكثير .... ووقت الشرح أيضا .. فإذا قام أحد الأعضاء مشكورا بوضع برنامج ، فما المانع ان يقوم غيره بشرحه ...

وأعتقد أن وضع البرنامج مفكوكا فى امتداد (mdb ) هو غاية الكرم ...

تحياتى

وبارك الله فى الجميع

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#53

السلام عليكم

هذي اول مرة اشارك فى المنتدى وتكون رد

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

بالنسبة للغة العبرية

فالحل انك تفتح النموذج فى وضع التصمييم وتغير الخصائص لمربع النص فى الاسم الاول وتغير لغة لوحة المفاتيح الى اللغة العربية وهكذا للبقية

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

#54

شكراً أخي/ أبو عقيل

على هذا الكرم السخى ، بارك الله فيك ورزقك كل الخيرات.

اقتباس
دارت بيني و بين tarekh مناقشة حول أفضلية عمل الترميز فى جدولين و نموذج و احد كما فى المثال ، و بين عمل جداول منفصلة و نماذج منفصلة للترميزات المختلفة

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

الموضوع الذي طرحه المراقب العام الغالي/ محمد طاهر للمناقشه جدير بالإهتمام والإدلاء برأيكم حياله.

فأنا أيضا من المهتمين بالموضوع وأتمنى رؤية جميع الأراء فيه لكي نصل إلى رأي حاسم فيه.

ربما لو تم طرح مناقشته في موضوع مستقل لكان أفضل لكي يأخذ حقه في المناقشه.

والله الموفق.

ibnmusqat.gif
#55

أخي أبو عقيل(f)(gift)

منذ أربعة أيام وأنا أحاول عمل خريطة تدفق للبرنامج وهذا أكثر ما يهمني والباقي يهون بعد ذلك .... حتى استيطع معرفة خط سير تنفيذه خاصة وأنه يحتوي على تكوينات لا يستغني عنها أي مبرمج في برامجه .... بل تعطي نقاط قوة ممتازة ...

بدأت أولاً بالصلاحيات

ومازلت لم أصل إلى النهاية

طبعاً أنا مبتدأ كما تعلم وسيأخذ الأمر وقتاً كبيراً

أخوك رضا عقيل:o:o:o:o

#56

اسمح لي أخي وأستاذي / محمد طاهر :o

لقد تأخرت عليك في الرد ،،،، لقد عملت عدة برامج أنا وزملائي وكنا نعمل كما

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

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

في جميع المدارس بالمملكة لاستخراج نتائج الطلاب ،،، وقد طبقناها أنا و زملائي (( لست أعمل لوحدي )) في عدة برامج وأكبر هذه البرامج هو خاص بـ ( شئون الموظفين ) ،، تم تركيب هذا البرنامج إلى الآن في مؤسستين الاولى كان تركيب البرنامج فيها في عام 1996 م ،،، وهو يعمل بدون أي مشاكل تذكر حتى الآن ،،، ورأيناها ناجحة 100% ،، فعمل الترميز فى جدولين و نموذج واحد يغني عن كثرة الجداول والنماذج ،، هذه وجهة نظري ،،، واسمح لي في التأخر في الرد أو سوء التعبير ،،، :o

أبو عقيل (f)

المسلم من سلم الناس من لسانه ويده

#57

أخي الكريم

أنا أيضا معحب بكونها فى نموذج واحد ، و لكن هذا بصورة أو بأخري قد يحتاج الي ان يصمم البرنامج بالطريقة التي هنا فى المثال ـ و أي بدون استخدام مفهوم قواعد البيانات العلائقية

اي أنه لا توجد علاقات بين الترميزات و الجداول الاساسية ، من خلال اكواد الترميز ، إنما يتم تسجيل وصف التميز مباشرة فى الجداول الرئيسية علي الطاير مثل جدول الموظفين هنا فى المثال

و هذا متعارض مع مفهوم قواعد البيانات العلائقية ، و الذي يعتبر ثورة فى تصميم قواعد البيانات منذ ظهوره

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

ما أراه من عيوب لهذه الطريقة هو ان البحث و الفلترة للبيانات فى الجداول ستتم من خلال وصف البيانات الموجودة فيها و ليس أكوادها ، و هذا قد يبطأها فى حالة البيانات الكبيرة ، و أنا هنا لا أتكلم عن ألف سجل ، و انما علي عدد كبير من السجلات ، و عدد كبير من المستخدمين ، فالبحث و الفلتر عن طريق الارقام ( أكواد الترميز سيكون أفضل )

اما كبر حجم القاعدة ، فاعتقد انه لا يمثل مشكلة مع الويندوز ، و لكنه كان بالفعل مشكلة فى تطبيقات الدوس

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

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

إدارة التخطيط

مدينة الرياض

متواجد

و سيتم عرض النتائح

أما فى حالة أسلوب قواعد البيانات العلائقية ، فسأبحث عن ثلاثة أكواد رقمية

2 و 7 و 3 مثلا فى الحقول المناظرة

علي فكرة انا لا أعارض الاسلوب المتبع من المجموعة ،ـ و لكن فقط أود مناقشته للاستفادة :D

مع تحياتي و شكري (f)

#58

الأخ ابو عقيل

الأستاذ / محمد طاهر

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

الموضوع الذي تناقشونه موضوع ممتاز .. وان سمحتم لي بادلاء دلوي وابداء رايي - جزاكم الله خيرا - فهو كما يلي :

1 - مفهوم قواعد البيانات العلائقية لن يتغير في استخدام الجدول الواحد للترميز فالعلاقة التي لن تستخدمها في الجدول ستستخدمها اكثر من مرة في بناء جمل sql و الاستعلامات .( رضيت ام ابيت ستستخدم العلاقات )

2 - جدول الترميز الموحد بين الاجهزة التي تستخدم نفس البرنامج لا داعي لنقله مع النسخة الاحتياطية من البرنامج .

3 - النسخة الاحتياطية نفسها ستكون اقل حجما .

4 - المستوى المرتفع ( الراقي ) للبرنامج الذي يستخم هذا الاسلوب .

5 - السيئة الوحيدة التي ظهرت لي من استخدام الجدول الواحد للترميز هي :

ارتباط كل السجلات ارتباطا وثيقا ببيانات الجدول فاذا حذف الجدول يتوقف العمل بالبرنامج وتفقد بيانات السجلات_ حتى القديمة والتي ادخلت من سنوات _ جزءا كبيرا من صحتها ومصداقيتها ولا يمكن ان تعود الى طبيعتها وصحتها الا بجدول مماثل لجدول الترميز .

تحياتي للجميع .

زكي

#59

أخي الكريم الأستاذ / محمد طاهر :D

تعقيبا على مشاركة أخي وزميلي / زكي (f)

من مشاركتك أخي / محمد طاهر

اقتباس
اي أنه لا توجد علاقات بين الترميزات و الجداول الاساسية ، من خلال اكواد الترميز ، إنما يتم تسجيل وصف التميز مباشرة فى الجداول الرئيسية علي الطاير مثل جدول الموظفين هنا فى المثال

إن تسجيل وصف الترميز مباشرة في الجدوال الرئيسية بدلا من الرقم أعتبرها حماية قوية لحفظ البيانات كما هي ( حرفيا ) وليس ( رقما ) ، أمثل لك

في حالة إسناد رقم معين لجدول الجنسيات مثلا :

1 - سعودي

2 - مصري

3 - سوري

عندما يتم حفظ الجنسية في الجداول الرئيسية ( رقما ) ،، سوف يحفظ

الرقم ( 1 ) سعودي ،،،، فلو أن شخصا دخل على جدول الجنسيات وغير

الرقم ( 1 ) إلى ( كويتي ) مثلا ،، عند الاستعلام عن ذلك الشخص السعودي

سوف تظهر جنسيته كما هي مقترنه بالرقم ( 1 ) سوف تظهر ( كويتي ) بينما جنسيته الحقيقية ( سعودي ) إذن هذا سوف يكون ضعفا في عملية الاستعلام عن جنسية الموظف بهذه الطريقة ،،،، وهكذا في جميع الجداول ( جدول المهن ، وجدول جهات العمل ،،،، وغيرها من الجداول ) ،،، و أيضا بطريقة أو أخرى هب أن شخصا حذف جدول ما وأنت قد حفظت في الجداول الرئيسية بما يقارن بذلك الجدول بالرقم وليس بالوصف مثلا الجدول المحذوف هو جدول المهن ،،، كيف ستتعرف على مهنة جميع الموظفين إذا كانت مدخلة كأرقام ( 1 ، 3 ، 5 ، 7 ، 9 ،،،، إلخ ) ،،،

كلٌ له وجهة نظر ،،، وكل يحترم وجهة نظر الآخر ،،، المهم قطف الثمرة الاخيرة

تحياتي : أبو عقيل (f)(f)(f)

المسلم من سلم الناس من لسانه ويده

#60

اخي أبو عقيل

اقتباس
إن تسجيل وصف الترميز مباشرة في الجدوال الرئيسية بدلا من الرقم أعتبرها حماية قوية لحفظ البيانات كما هي ( حرفيا ) وليس ( رقما ) ، أمثل لك

في حالة إسناد رقم معين لجدول الجنسيات مثلا :

1 - سعودي

2 - مصري

3 - سوري

عندما يتم حفظ الجنسية في الجداول الرئيسية ( رقما ) ،، سوف يحفظ

الرقم ( 1 ) سعودي ،،،، فلو أن شخصا دخل على جدول الجنسيات وغير

الرقم ( 1 ) إلى ( كويتي ) مثلا ،، عند الاستعلام عن ذلك الشخص السعودي

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

أنا أتفق نعك فى ذلك ، - بل و ألجأ لهذا الاسلوب عند الاحتفاظ بجداول معينة فى القاعدة لهذا السبب ، و هذه النقطة فى صالح أسلوبك

و لكن أعتقد أن البحث و الفلترة فى الاسلوب الآخر أقوي و أسرع جدا خاصة مع زيادة حجم البيانات

الأخ زكي

اقتباس
- مفهوم قواعد البيانات العلائقية لن يتغير في استخدام الجدول الواحد للترميز فالعلاقة التي لن تستخدمها في الجدول ستستخدمها اكثر من مرة في بناء جمل sql و الاستعلامات .( رضيت ام ابيت ستستخدم العلاقات )

أنا أقصد بحديثي الاسلوب المتبع فى المثال موضوع هذه المناقشة ، فأنا علي ما أذكر أنه لا يستخدم أسلوب قواعد البيانات العلائقية

سأراجعه ثانية قبل أن أكتب ردي القادم غدا باذن الله

اقتباس
2 - جدول الترميز الموحد بين الاجهزة التي تستخدم نفس البرنامج لا داعي لنقله مع النسخة الاحتياطية من البرنامج .

3 - النسخة الاحتياطية نفسها ستكون اقل حجما .

4 - المستوى المرتفع ( الراقي ) للبرنامج الذي يستخم هذا الاسلوب .

أتفق معك فى ذلك

-

اقتباس
السيئة الوحيدة التي ظهرت لي من استخدام الجدول الواحد للترميز هي :

ارتباط كل السجلات ارتباطا وثيقا ببيانات الجدول فاذا حذف الجدول يتوقف العمل بالبرنامج وتفقد بيانات السجلات_ حتى القديمة والتي ادخلت من سنوات _ جزءا كبيرا من صحتها ومصداقيتها ولا يمكن ان تعود الى طبيعتها وصحتها الا بجدول مماثل لجدول الترميز .

هذه لم أفهمها ، برجاء التوضيح

و ختاما لهذا الرد ، ساحاول غدا بإذن الله التركيز فى المناقشات السابقة و فى مقارنة الاسلوبين ، و أنا أشعر أني سأستفيد جدا من هذه المناقشة

مع تحياتي

#61

أخواني (f)

الرجاء بعد الانتهاء من المناقشات شرح الطريقة فأنا لازلت لا افهمها

أعانكم الله على تحمل عبئ الشرح

أخوكم رضا عقيل:o:o

#62

الاخ ابو عقيل :

اراك متشجع لطريقة الجداول المتعددة في حفظ البيانات ... وانا معك .. رغم اننا نعمل معا من سنين واعرفك تطبق وبدون تأخر لطريقة جدول الترميز الواحد ..

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

الاستاذ محمد طاهر

اقتباس:

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

السيئة الوحيدة التي ظهرت لي من استخدام الجدول الواحد للترميز هي :

ارتباط كل السجلات ارتباطا وثيقا ببيانات الجدول فاذا حذف الجدول يتوقف العمل بالبرنامج وتفقد بيانات السجلات_ حتى القديمة والتي ادخلت من سنوات _ جزءا كبيرا من صحتها ومصداقيتها ولا يمكن ان تعود الى طبيعتها وصحتها الا بجدول مماثل لجدول الترميز .

هذه لم أفهمها ، برجاء التوضيح

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

ما اقصد ه هنا انه لو حذف جدول الترميز واردت تشغيل البرنامج وعرض البيانات سواء على الشاشة او على تقرير... كيف سيكون شكل البيانات ؟؟؟

تحياتي للجميع

زكي

#63

أخي الكريم الأستاذ / محمد طاهر (f)

اقتباس
و لكن أعتقد أن البحث و الفلترة فى الاسلوب الآخر أقوي و أسرع جدا خاصة مع زيادة حجم البيانات

ما فائدة البحث والفلترة السريعة بالرمز ، والبيانات معرضة للخطأ في حال تغيير جنسية معينة عن رمزها أو مهنة معينة قد تغير رمزها أو ,,,,,,,,,, إلخ .

وماذا عن زيادة حجم البيانات ؟؟؟؟

أولا : البرامج التي تُعمل على ( الاكسس ) كلها برامج صغيرة إما شخصية أو لمؤسسات صغيرة لا يتجاوز أفرادها على ( 1000 ) موظف ، ليس كمثل البرامج

الكبيرة ( أوراكل ، وغيرها من لغات البرمجة الكبيرة ،،،،،،،،،، إلخ ) والتي تستخدم لبرامج كبيرة لمؤسسات حكومية كبيرة مثل برنامج ( وزارة المياه ) مثلا ،، ( برنامج لمتابعة اصدار فواتير المشتركين ) على مستوى المنطقة الشرقية والربط بالشبكة وإمكانية الدخول على جميع المناطق ( الجبيل ، إبقيق ، الخفجي ، الخبر ، الدمام ، القطيف ،، إلخ ) ،،، إنظر إلى هذا البرنامج سوف يخدم كم من المشتركين .

هل البرمجة بلغة ( أكسس ) سوف تثبت جدارتها مع هذا البرنامج ؟؟؟؟

ثانيا : أما عن الفلترة السريعة سواءاً بالرمز أو بالوصف للرمز ، فأنت كما ترى الطفرة التي تحصل في عالم الكمبيوتر في السرعات ،، لا أدري إلى أي سرعة

وصل حتى الآن من ( 1500 إلى 2500 ) أو ربما أكثر ، وهذا سوف يقضي على البطء في الفلترة والبحث الذي تتحدث عنه ،،،،،،

اقتباس
أنا أتفق معك فى ذلك ، - بل و ألجأ لهذا الاسلوب عند الاحتفاظ بجداول معينة فى القاعدة لهذا السبب ، و هذه النقطة فى صالح أسلوبك

أنا أرى أنك مقتنع تماما بخطر التغيير في جداول معينة في القاعدة ، لذلك

أنت تحتفظ بنسخة منها ، وهذه الجداول في حالة التغيير فيها سوف تأثر على

بيانات كثير من الجداول المرتبطة بها كرمز ،،، :D

تحياتي : أبو عقيل (f)(f)(f)

المسلم من سلم الناس من لسانه ويده

#64

السلام عليكم ،

أخي أبو عقيل ساحاول القيام بدور الرافض لفكرتك ، و دعم الاسلوب الاخر ، لكي نحاول اظهار كافة العيوب و المميزات :D

الأخ زكي :

اقتباس
ما اقصد ه هنا انه لو حذف جدول الترميز واردت تشغيل البرنامج وعرض البيانات سواء على الشاشة او على تقرير... كيف سيكون شكل البيانات ؟؟؟

بالنسبة للمثال موضوع المناقشة ، فلن يتغير شكل البيانات ، حيث ان الاخ ابو عقيل يستخدم جدول الترميز فى الادخال فقط ، و يتم تسجيل جميع وصف الترميزات فى جدول الموظفين

أخي أبو عقيل

اقتباس
ما فائدة البحث والفلترة السريعة بالرمز ، والبيانات معرضة للخطأ في حال تغيير جنسية معينة عن رمزها أو مهنة معينة قد تغير رمزها أو ,,,,,,,,,, إلخ .

هذا يمكن التحكم فيه من خلال صلاحيات التعديل لنماذج الترميز

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

اذا فى كل الاحوال يجب حماية نماذج الترميز من التعديل عن طريق الصلاحيات و عليه تقل أهمية موضوع الاحتفاظ بالبيانات قبل التعديل ، و خاصة أنه مع تطور المعدات الحالي و المستمر يمكن بسهولة الاحتفاظ بنسخة كاملة من البيانات بما فيها جداول الترميز لكل يوم .

اقتباس
وماذا عن زيادة حجم البيانات ؟؟؟؟

أولا : البرامج التي تُعمل على ( الاكسس ) كلها برامج صغيرة إما شخصية أو لمؤسسات صغيرة لا يتجاوز أفرادها على ( 1000 ) موظف

عن نفسي أعددت علي الاكسس برامج تتعامل مع عدد سجلات أكثر من ذلك بكثير ، و أهتم بمعرف التأثيرات عليها ، و خاصة البرامج التي يتم الاحتفاظ بكافة سجلاتها منذ البدء فى نفس القاعدة ، مثل المراسلات أو المستخلصات للمشاريع فى حالة تعدد تعاقدات الجهة صاحبة البرنامج ، علي عكس برامج الموظفين و الحسابات التي يمكن فصل بياناتها الي فترات زمنية

اقتباس
ثانيا : أما عن الفلترة السريعة سواءاً بالرمز أو بالوصف للرمز ، فأنت كما ترى الطفرة التي تحصل في عالم الكمبيوتر في السرعات
.

و في نفس الوقت هذه الطفرة تحدث فى طرق تخزين البيانات ، لذلك فالتوفير فى مساحة البرنامج و مساحة النسخ الاحتياطية لم يعد ذو أهمية

لذلك قد يكون من المناسب الاهتمام أكثر بسرعة الاداء

----------

خطرت لي فكرة و لا أدري مدي جدواها

و هي محاولة الحصول علي كل الفوائد ، فنقوم بعمل جدول الترميزات بطريقتك ، و عند التخزين نخزن كل من الكود و الرقم فيمكن استخدام الاثنين فى البحث و الفلترة

أيضا بالنسبة لموضوع تغيير الكود بعد ادراجه فى الجدول ، هناك فكرة تمكننا من التحكم فيه و السيطرة عليه تماما

و هي عمل جدول ترميز مؤقت كلما ادرجنا سجل فى جدول الموظفين نختبر هل الكود و وصفه تم تسجيلهم فى الجدول المؤقت أم لا

فان كان لا فلا ضير و يتم تسجيل الرمز ووصفه فى كل من جدول الترميز المؤقت و جدول الموظفين

و ان كان مسجلا فى جدول الترميز ، يتم مقارنة القيمة الجديدة بالقيمة المدرجة فى جدول الترميز المؤقت قبل تسجيلها فى جدول الموظفين

فنكون بذلك حصلنا علي كل الميزات

أيضا ، أود أن أؤؤكد أن ما نناقشه هو تطبيق أسلوب العلاقات أو الجدول الواحد بدون علاقة ، فيما يخص جدال الترميز فقط

فمفهوم قواعد البيانات العلائقية فى البرنامج ككل غير قابل للتجاهل ، فمثلا لو أضيف الي هذا البرنامج سجلات حضور و غيار الموظفين ، فلا أعتقد أن عدم ربطها بجول الموظفين يكون مناسبا

و انما أنا أقصر رأيي علي ما يخص جدال الترميزات الفرعية ( التي تحوي كود ووصف لهذا الكود فقط )

مع تحياتي

#65

عزيزي ابو عقيل

الاستاذ محمد

السلام عليكم ورحمة الله ..

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

اقتباس

خطرت لي فكرة و لا أدري مدي جدواها

و هي محاولة الحصول علي كل الفوائد ، فنقوم بعمل جدول الترميزات بطريقتك ، و عند التخزين نخزن كل من الكود و الرقم فيمكن استخدام الاثنين فى البحث و الفلترة

لقد جربت اخي الكريم هذه الطريقة في برنامج لتسجيل الغياب والتأخر الصباحي يطبق حاليا في حوالي 30 مدرسة ووصلت عدد السجلات المسجلة في بعض المدارس الى اكثر من 11 الف سجل . ويتم فيه تسجيل رقم الطالب ( المفتاح ) واسمه وتاريخ الغياب و .. ا لخ عن طريق الالحاق من برنامج معارف مباشرة . ولك ان تتصور طبعا امكانية تغير رقم الطالب في معارف او اسمه او فصله وهذا ما حصل فعلا في بعض المدارس ثم سجل كغائب تحت رقم مختلف او اسم مختلف ( تم اضافة اسم الجد او حرفي "بن " اليه ) او تم تغيير فصله من "أ" الى "ب" او من رقم "1" الى "2" مثلا ... او الخ .. الخ .

والسؤال الآن : ماذا سيظهر لك ببساطة استعلام تجميعي ستستخدمه او تظطر الى استخدامه في شاشة او تقرير لبيان عدد ايام غياب كل طالب ؟

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

نصيحة مجرب : ابتعد عن هذه الطريقة تماما..

هذا والله اعلم ...

تحياتي زكي

#66

عزيزي ابو عقيل

الاستاذ محمد

السلام عليكم ورحمة الله ..

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

اقتباس

خطرت لي فكرة و لا أدري مدي جدواها

و هي محاولة الحصول علي كل الفوائد ، فنقوم بعمل جدول الترميزات بطريقتك ، و عند التخزين نخزن كل من الكود و الرقم فيمكن استخدام الاثنين فى البحث و الفلترة

لقد جربت اخي الكريم هذه الطريقة في برنامج لتسجيل الغياب والتأخر الصباحي يطبق حاليا في حوالي 30 مدرسة ووصلت عدد السجلات المسجلة في بعض المدارس الى اكثر من 11 الف سجل . ويتم فيه تسجيل رقم الطالب ( المفتاح ) واسمه وتاريخ الغياب و .. ا لخ عن طريق الالحاق من برنامج معارف مباشرة . ولك ان تتصور طبعا امكانية تغير رقم الطالب في معارف او اسمه او فصله وهذا ما حصل فعلا في بعض المدارس ثم سجل كغائب تحت رقم مختلف او اسم مختلف ( تم اضافة اسم الجد او حرفي "بن " اليه ) او تم تغيير فصله من "أ" الى "ب" او من رقم "1" الى "2" مثلا ... او الخ .. الخ .

والسؤال الآن : ماذا سيظهر لك ببساطة استعلام تجميعي ستستخدمه او تظطر الى استخدامه في شاشة او تقرير لبيان عدد ايام غياب كل طالب ؟

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

نصيحة مجرب : ابتعد عن هذه الطريقة تماما..

هذا والله اعلم ...

تحياتي زكي

#67

أخي الكريم / محمد طاهر :D

كما تفضل أخي وزميلي الاستاذ / زكي (f)

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

أنا أتفق مع أخي الاستاذ / زكي تماما ,,,,,,,,, (f)

أما عن الـ

اقتباس
خطرت لي فكرة و لا أدري مدي جدواها

و هي محاولة الحصول علي كل الفوائد ، فنقوم بعمل جدول الترميزات بطريقتك ، و عند التخزين نخزن كل من الكود و الرقم فيمكن استخدام الاثنين فى البحث و الفلترة

أيضا بالنسبة لموضوع تغيير الكود بعد ادراجه فى الجدول ، هناك فكرة تمكننا من التحكم فيه و السيطرة عليه تماما

و هي عمل جدول ترميز مؤقت كلما ادرجنا سجل فى جدول الموظفين نختبر هل الكود و وصفه تم تسجيلهم فى الجدول المؤقت أم لا

فان كان لا فلا ضير و يتم تسجيل الرمز ووصفه فى كل من جدول الترميز المؤقت و جدول الموظفين

و ان كان مسجلا فى جدول الترميز ، يتم مقارنة القيمة الجديدة بالقيمة المدرجة فى جدول الترميز المؤقت قبل تسجيلها فى جدول الموظفين

فنكون بذلك حصلنا علي كل الميزات

لو تكرمت أخي الكريم / محمد طاهر أن تضع هذه الفكرة في مثال ، كي نختبر مدى صلاحية هذه الفكرة وحصولنا على كل الميزات،،،،،،،،، :D

أبو عقيل (f)(f)(f)

المسلم من سلم الناس من لسانه ويده

#68

جل ما يتمناه أي مبرمج يلغة الأكسس هو مثالك الذي وضعته ، فلك التحية والتقدير ;)

جعله الله في ميزان حسناتك وأثابك أعالي جنانه

#69

هذا المثال هو الإجابة على سؤالي ... أسأل الله عز وجل أن يزيد أبا عقيل علما.. وكم أتمنى أن يقوم أي أخ كريم بشرح هذا المثال بالصورة .. والله كم أتمنى ذلك .. وأنا مستبشر خير من اخواني الفضلاء...

#70

للرفع

#71

(f)للرفع(f)

#72

الأخوة الكرام .. السلام عليكم ورحمة الله وبركاته ..

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

اللهم آمين

ôٌي_مل‎_مèو_ْ‏يل.rar

#73

بسم الله الرحمن الرحيم

إخواني هذا الشرح مجرد اجتهاد فقط فلست أنا من صنع المثال وأتمنى أن أكون عند حسن ظنكم فلست خبيراً كما تظنون ولكني طالب علم أجتهد فقط لا غير كما أرجوا أن يسامحنى أبو عقيل أعاده الله إلينا سالماً على هذا الشرح السيئ لمثال عبقري من أمثلته .

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

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

إذا الصلاحيات هي فتح النموذج أو التقرير وبكلامنا العادي أننا إذا صنعنا جدول يتم تحديثه كلما تم فتح البرنامج ليكون موجود به اسم المستخدم الحالي فقط وكلمة السر الخاصة به مع مستويات الصلاحيات له ، وعند فتح أي نموذج يذهب البرنامج إلى الجدول ثم يختبر خلية الصلاحية فإذا كانت بنعم ( أو 1) يفتح النموذج وإذا كانت ( لا أو 2) يغلق النموذج مع رسالة بها اسم المستخدم الحالي تقوله له ليس من حقك فتح هذه الشاشة .

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

وفي مثال أخونا أبو عقيل كانت الأدوات كالتالي مع أشكال توضح خصائص الحقول

أ- الجداول

1- جدول المستخدمين ( tb5) وهو الذي سيحتوي على معلومات جميع المستخدمين ويحتوي على

* حقل Name لاسم المستخدم مفتاح يمنع تكرار أسماء المستخدمين

tab01.jpg

* حقل rmz لرمز المستخدم والغرض الأساسي منه تمييز المدير أو مالك البرنامج بالرمز ( mas ) ليتم تمييزه عن غيره من المستخدمين وهذا التمييز هو الذي سيستخدم لاحقاً في فتح نموذج الصلاحيات نفسه وهو حقل لا يسمح بالتكرار حتى يكون المسئول واحد فقط .

tab02.jpg

* حقل password وهو الخاص بالرمز السري للمستخدم أو الرقم السري وقناع الإدخال يكون password ليكون نجوم ولا يسمح بالتكرار .

tab03.jpg

*بعد ذلك تأتي حقول المستويات ( levels ) وهذا الحقل عبارة عن قائمة من عمودين عمود يحتوي على صفين بهما القيمين (1 ،2) والعمود الآخر قيمتين مناظرتين ( نعم ولا ) وتم تغيير خصائص هذا الحقل ليظهر كعمود واحد به الأربع قيم أسفل بعضهم ويتم تخزين القيمة 1 أو 2 في الحقل

tab04.jpg

tab04-2.jpg

وسبب الاختيار لخصائص هذا الحقل بهذا الشكل لأنه سيتم إدخال قيم هذا الحقل من نموذج الصلاحيات وستكون القيم الظاهرة في النموذج هي نعم أولا بينما يتم تخزين القيم في الحقل ب 1مناظره لنعم أو 2 مناظره لـ لا

وهكذا حتى المستوى الرابع عشر كما في مثالنا ...

أما البيانات التي ستخزن في هذا الجدول

فهي اسم المستخدم ورمزه ورقمه السري وصلاحياته والتي سنقرنها بنموذج أو أكثر مقابل لكل level بمعنى أننا لو اعتبرنا أن لدينا نموذج form1 سنقرنه بـ level1 فإذا كانت قيمة حقل level1 =1 سنسمح بفتح النموذج أما إذا كانت قيمته 2 سيتم إغلاق النموذج .

الشخص الذي سيوضع رمزه ( حسب مثال أبو عقيل ) = mas هو الذي سيكون له الصلاحيات الكاملة بغض النظر عن اسمه أو كلمة السر الخاصة به . وسنقوم بتغيير جميع مستويات الصلاحية الخاصة به في الجدول إلى الرقم 1

2- جدول fbi وهذا الجدول به نفس الحقول السابقة بحيث أنك تستطيع نسخ الجدول السابق مع تغيير اسمه ثم حذف حقل password منه ولكن أخونا أبو عقيل أضاف حقيلن آخرين وهما date و Time ليستخدمهما في تاريخ وتوقيت الحذف والإضافة والتعديل في البيانات وأعتقد أن هذين الحلقين ليس لهما علاقة مباشرة بموضوع الصلاحيات .

tab05.jpg

هذا الجدول لن يتدخل أحد في كتابة بياناته بل سيقوم البرنامج بتحديث بياناته بناءاً على اسم المستخدم الذي سندخله في شاشة الدخول للبرنامج فعندما نكتب اسم المستخدم وكلمة مروره الصحيحة سيقوم البرنامج بتشغيل استعلام تحديث يأخذ بيانات المستخدم كاملة ويحدث بها سجل جدول fbi وكلما تغير المستخدم تغيرت بيانات سجل الجدول fbi حسب المستخدم الجديد .

النماذج والاستعلامات .

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

1- نموذج إضافة المستخدمين frm-p2 وهو نموذج بسيط مصدره الجدول tb5 يتكون من حقل name وحقل password وحقل rmz وزر أمر ( ذهاب إلى سجل جديد ) ومكتوب عليه إضافة ...

form01.jpg

وعند إضافة أي مستخدم وبما أن حقل name مفتاح وحقل password لا يتكرر وحقل rmz لا يتكرر بذلك لن يسمح بإدخل مستخدم مرتين مع ملاحظة عند إدخال معلومات المسئول أو المدير يجب أن يأخذ حقل الرمز القيمة mas ( كما في مثالنا ) . وعند إضافة الحقول الثلاثة سيتم إعطاء القيمة 2 لكل مستويات الصلاحية لأنها القيمة الافتراضية . وعندما نريد تغيير هذه القيمة سيكون من نموذج الصلاحيات لاحقاً . .

2- نموذج حذف مستخدم frm-p5

form02.jpg

form03.jpg

وهو كما بالشكل نموذج مصدر السجل فيه عبارة عن استعلام تم إنشائه عن طريق منشئ الاستعلام ووظيفته تحديد سجل في جدول tb5 بناءاً على الاسم الذي سيتم اختياره من خلية اسم المستخدم .. بمعنى أنه عندما نختار من القائمة اسم مستخدم لنقوم بحذفه يقوم الاستعلام بتحديد ذلك السجل في جدول tb5 والذي يتساوى فيه الاسم الذي تم اختياره من القائمة مع حقل name في الجدول ...

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

form04.jpg

3- نموذج تعديل بيانات مستخدم frm-p5

وهذا النموذج مثل سابقه مصدر السجل فيه عبارة عن جملة sql استعلام تم إنشائه عن طريق منشئ الاستعلامات داخل الخصائص ويتم تحديد السجل الحالي بناءاً على الاسم الذي يتم إدخاله في حقل الاسم في النموذج فعند كتابة اسم مستخدم في حقل الاسم يتم تحديد السجل والذي يتساوى فيه الاسم مع حقل name تمهيداً للتعامل مع هذا السجل مع وضع قيمة الاسم من الجدول في حقل mes المخفي على النموذج وكذلك كلمة السر المناظره للاسم في حقل pasword على النموذج إيضاً

form05.jpg

form06.jpg

في النموذج يوجد حقلين غير منضمين في النموذج وهما name و pas

بعد كتابة الاسم المراد تعديل كلمة السر له في الحقل name التأكد من عدم خلو الحقل من البيانات والتأكد من وجود هذا المستخدم ضمن المستخدمين بكود يوضع في خصائص هذا الحقل ( name ) في حدث بعد التحديث

form07.jpg

إذا كان المستخدم ضمن المستخدمين والاسم صحيح سينتقل المؤشر إلى خلية كلمة المرور السابقة والتي اسمها pas وهي حقل غير منضم وبعد كتابة كلمة المرور يتم التأكد من أن كلمة المرور المدخله تساوي كلمة المرور الخاصة بذلك المستخدم فعلاً وإذا لم تساويها يتم اصدار رسالة تفيد ذلك مع إخلاء الحقل والرجوع لنفس الحقل لكتابته من جديد ويتم ذلك بوضع كود في خصائص الحقل pas في حديث بعد التحديث كما بالشكل التالي

form08.jpg

وإذا كانت كلمة المرور صحيحة سيتم إظهار حقل password وهو لتغيير كلمة المرور .

وبما أن الحقل pasword هو من الجدول نفسه فأي تحديث للحقل يتم التحديث في الجدول مباشرة ولكن كيف نحمي هذا الحقل من التحديث المباشر ... ببساطه لن يتم تمكين أو إظهار هذا الحقل أو زر الأمر حفظ إلا إذا كانت كلمة المرور صحيحة والاسم موجود فعلاً ....

وزر الأمر حفظ مهمته إخلاء جميع الحقول مره ثانيه تمهيداً لتعديل مستخدم آخر أو إيذاناً بانتهاء التعديلات المطلوبة .

4- نموذج صلاحيات المستخدمين (( النموذج الأساس )) frm-p6

هذا النموذج هو الذي سنقوم بإعداد الصلاحيات للمستخدمين من خلاله ولكن قبل إعداد هذا النموذج يجب عليك تحديد مستويات الصاحيات أولاً .. بمعنى

لدينا الآن 14 مستوى صلاحيات قابل للزيادة مع التعديل في الاستعلامات ومن الممكن استخدام أي عدد منهم وترك الباقي وفي مثال أبو عقيل استخدم 7 مستويات فقط

مقابل هذه المستويات يجب أن يكون هناك نماذج أو تقارير

أي النموذج رقم واحد مقابل للمستوى واحد ..... فإذا كان للمستخدم القيمة (1) في level1 يقوم البرنامج بالسماح له بفتح النموذج واحد وإذا كانت القيمة 2 لا يسمح له بفتح النموذج

وبالنسبة لمثال أبو عقيل كانت المستويات كالتالي

Level1 ========> نموذج f1 تسجيل موظف جديد

Level2 ========> نموذج f2-3 تعديل معلومات موظف

Level6 ========> نموذج frm-p2 تسجيل مستخدم جديد

Level7 ========> نموذج frm-p5 حذف مستخدم

Level3 ========> نموذج f-rturn إعادة موظف

Level8 ========> نموذج name معلومات المنشأة

Level9 ========> نموذج tar أساسيات البرنامج

ولنرى الآن النموذج frm-p6 ولماذا لم نرى له صلاحية ضمن مستويات الصلاحيات مع أنه محمى ومحجوب عن المستخدمين وممنوح صلاحيته للمدير أو المسئول وهذا ما سنعرفه

form09.jpg

النموذج مصدره جملة sql تم انشائها عن طريق منشئ الاستعلامات داخل خصائص النموذج كما بالشكل السابق وبنفس أسلو ب وطريق عمل النماذج السابقة .... أما مصدر الصف نفسه للحقل user فهو أيضاً جملة sql مبنيه بمنشئ الاستعلامات داخل الخصائص ومهمتها عرض أسماء المستخدمين جميعاً من الجدول ما عدا المستخدم الذي قيمة الحقل rmz له تساوي mas أي عرض جميع المستخدمين ما عدا المسئول فهو دائماً صلاحياته مفتوحه لا ويحتاج لتعديل صلاحيات نفسه ....

form10.jpg

وعند اختيار اسم المستخدم سيتم تحديث حقول levels في النموذج بيانات المستخدم بناءاً على معيار اسم المستخدم نفسه ...مع وضع الكود التالي بعد في حدث بعد التحديث للحقل usre

DoCmd.Requery  'تحديث النموذج لعرض الحقول 
DoCmd.GoToControl "level1"  'الذهاب إلى الحقل الأول

الآن بعد اختيار اسم المستخدم وعرض صلاحياته نستطيع التعديل فيه بتغيير قيم levels من لا إلى نعم والتي ستقوم بتخزين القيم 1 بدلاً من نعم في الجدول والقيمة 2 بدلاً من لا كما أسلفنا في الحديث عن الجداول .

وبعد تعديل الصلاحيات للمستخدم وبالضغط على زر أمر حفظ التغييرات الجديدة للمستخدم يتم الحفظ مع إخلاء حقل user وكذلك تحديث النموذج ليعود كما تم الفتح عليه تمهيداً للتعديل في مستخدم جديد مع وضع الكود التالي في حدث عند الضغط لزر الأمر

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.GoToControl "user"
    Me![user] = Null
    DoCmd.Requery

*************

الآن نصل لأهم نقطه وهى كيفية تعريف الصلاحية للنموذج

يتم إنشاء حقل يوضع على كل نموذج نريد عمل صلاحية له أو أي تقرير نريد عمل صلاحية له وهذا الحقل به دالة

وهنا الصلاحية تنقسم إلا قسمين

الأول == صلاحيات للمسئول فقط

الثاني == صلاحيات للمستخدمين

قلنا من قبل أن لكل نموذج أو تقرير يوجد مستوى صلاحية مناظر له وكل ما علينا هو استحضار قيمة هذا المستوى من جدول fbi وهو الذي تم إلحاق بينات المستخدم الحالي له بحيث نرى هل قيمة هذا المستوى لهذا المستخدم هى 1 أم 2 فغذا كان 1 يتم فنح النموذج أما إذا كانت 2 يتم إغلاق النموذج مع إظهار رسالة تفيد بعدم صلاحية المستخدم لهذا الإجراء ..

أما بالنسبة للمسؤل أوالمدير فيتم البحث عن قيم الحقل emz وليس level لأنه هو الوحيد الذي سيكون رمزه mas أي مسئول وعند فتح النموذج إذا وجدنا أن قيمة هذا الحقل هي mas يفتح النموذج وإلا فليس له صلاحية الفتح أي ليس هو المسئول ..

وفي المثال أو صلاحيات المستخدمين (( النموذج الأساس )) frm-p6

يوجد الحقل rmz وهو غير مرئي للمستخدم ويوجد به الدالة التالية

=DLookUp("[rmz]";"fbi")

وهي الخاصة بإرجاء القيمة للحقل rmz من جدول fbi ووضعها في هذا الحقل ليتم المقارنه بعد ذلك بالكود

وفي حدث عند الفتح للنموذج تم وضع الكود التالي وهو كود الصلاحية في جميع النموذج مع اختلاف طفيف من المسئول إلى المستخدم

Private Sub Form_Open(Cancel As Integer)
If Me![rmz] = "mas" Then   'إذا كان الحقل rmzقيمته تساوي mas
DoCmd.OpenForm "frm-p6"  'افتح النموذج 
Else  ' وإلا 
Beep    'صوت   
Dim zm   'إعلان عن متغير 
zm = DLookup("[user]", "fbi")    'المتغير يساوي اسم المستخدم الحالي 
MsgBox "عفوا يا سيد   " & "( " & zm & " )" & " شاشة الصلاحيات والتحكم من اختصاص المسئول فقط  !!!! ", vbOKOnly, "تحذيـــــــر"
DoCmd.Close    'اغلق النموذج 
End If

End Sub

هذا الكود هو الأساسي وببساطه يقوم مقارنة الحقل rmz في النموذج والذي أخذ قيمته بالدالة السابقة وهل هذه القيمة هي mas أم لا وعلى هذا الأساس يتم فتح النموذج .

أ========

أما النسبة للصلاحية للمستخدمين فنأخذ مثال عليها نموذج tar وبه مستوى الصلاحية level9

form11.jpg

حقل الصلاحية هو الحقل الغير مرئي للمستخدم level9 وبه دالة

=DLookUp("[level9]";"fbi")

وهذه الدالة تقوم بإرجاع القيمة داخل الحقل level9 داخل الجدول fbi

وفي حدث عند الفتح يتم وضع الكود التالي ونلاحظ أنه يختلف عن الكود السابق بدلاً من القيمة rmz نضع القيمة 1

Private Sub Form_Open(Cancel As Integer)
If Me![level9] = 1 Then  '       موضع الاختلاف في القيمة
DoCmd.OpenForm "tar"
DoCmd.GoToControl "no1"
Else
Beep
Dim zm
zm = DLookup("[user]", "fbi")
MsgBox "عفوا يا سيد /  " & "( " & zm & " )" & " ليس لك الحق بالدخول لهذه الشاشة ", vbOKOnly, "تحذيـــــــر"
DoCmd.Close
End If
End Sub

====

بذلك نكون تطرقنا لجوانب الحماية وبقي شاشة الدخول إلى البرنامج

النموذج frm-p1 وهو الخاص بالدخول إلى البرنامج وتسجيل اسم المستخدم وكلمة المرور

بنفس أسلوب الكثير من النماذج السابقة كان مصدر هذا النموذج هو جملة sql عن طريق منشئ الاستعلامات داخل الخصائص والمعيار هو اسم المستخدم name

form12.jpg

عندما يدخل المستخدم اسماً في حقل اسم المستخدم name يتم تحديث الحقل المخفي password ليحتوي على قيمة كلمة المرور المأخوذه من جدول fb5 بناءا على اسم المستخدم ... وللتأكد من وجود المستخدم ضمن المستخدمين من عدمه يوضع الكود التالي في حدث بعد التحديث للحقل name مع إظهار رسالة تفيد عدم وجود المستخدم ضمن المستخدمين المعتمدين

Private Sub name_AfterUpdate()
DoCmd.Requery
If (Eval("[Forms]![frm-p1]![pasword] Is Null")) Then
Beep
MsgBox "åÐÇ ÇáãÓÊÎÏã ÛíÑ ãæÌæÏ Öãä ÇáãÓÊÎÏãíä ÇáãÚÊãÏíä ÈÇáÍÇÓÈ..  ÊÃßÏ ãä ÇÓã ÇáãÓÊÎÏã ÃæáÇ !!!", vbInformation, "ÑÓÇáÉ ÊÍÐíÑíÉ"
DoCmd.GoToControl "name"
Me![name] = Null
 End If
  If (Eval("[Forms]![frm-p1]![pasword] Is Not Null")) Then
  DoCmd.GoToControl "zm"
  End If
End Sub

وعند وجود المستخدم فعلاً يتم نقل المؤشر إلى خانة كلمة المرور الحقل zm لكتابة كلمة المرور وبعد تحديث هذا الحقل يتم تشغيل الكود التالي ليتأكد البرنامج أن كلمة المرور التي كتبها المستخدم مطابقة لتلك المخزنة له في الجدول tb5 والكود التالي يوضع في حدث بعد التحديث للحق zm

For r = 1 To 3
x = Me![pasword]
If Me.zm = "12369874" Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "q4", acNormal, acEdit   ' هذا الاستعلام غير موجود في المثال
DoCmd.SetWarnings True
DoCmd.Close
End
End If
If Me.zm = x Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "q6", acNormal, acEdit ' استعلام إلحاق بيانات المستخدم الحالي بالجدول fbi
DoCmd.SetWarnings True
DoCmd.Close
'docmd.OpenForm " "
End
Else
Beep
MsgBox "كلمة المرور خاطئة ... حاول مرة أخرى", 48, ""محاولة أخرى
End
End If
Next r
MsgBox "لا محاولات أخرى فضلاً اتصل على المبرمج على الرقم 55555555  !", 48, ""خروج نهائي من البرنامج
DoCmd.Quit
End Sub

ولي ملاحظة على هذا الكود أولاً القسم الأول منه يختبر الحقل zm فإذا ساوى الرقم 12369874 يتم تشغيل استعلام q4 وهذا الاستعلام أساساً غير موجود في المثال وأتوقع انه يقوم بحذف جميع المستخدمين من الجدول tb5 بما فيهم المدير أو المسئول حتى يتسنى للمبرمج إضافة مسؤول جديد وكلمة مرور جديدة له ... وهذا يحدث عند تحميل البرنامج لأول مره مثلاً .. وهذه الملاحظة مجرد استنتاج فكما تعلمون لست أنا من صنع المثال ..

والجزء الثاني من الكود يقوم باختبار نفس الحقل zm فإذا وجده يساوي الحقل password طبعاً بالإعلان عن متغيرات مع عد لعدد المحاولات وإذا وجد القيمين متطابقين يدخل البرنامج وإلا يخرج من البرنامج بعد عدد معين من المحاولات

form13.jpg

أما الاستعلام الوحيد الخارجي الذي استخدمه أبو عقيل في الصلاحيات فهو الاستعلام q6 وهو استعلام تحديث يقوم بأخذ قيم سجل المستخدم الحالي بعد أن أدخل اسمه وكلمة مروره الصحيحه ويحدث بها بيانات الجدول fbi ليكون هذا الجدول دائماً هو جدول المستخدم الحالي .

ملاحظات :

هناك ملاحظة هامة على المثال وهي نقطة ضعف وتلافاها أبو عقيل في مثال آخر ولكني لم أعثر عليه .... وهي أنك تستطيع حذف وتعديل جميع المستخدمين وبل وتصنع من نفسك المسئول ذو الصلاحيات الكاملة وذلك بفتح الجدول tb5 والتعديل فيه بحذف النجوم وكتابة ما تريد وسيظهر على أنه نجوم ولكنك تعرف ما كتبت داخل اسم المستخدم وكلمة المرور بما أنك تعرف وظيفة كل حقل وهذه النقطة تم تلافيها بأن يقوم البرنامج بتشفير كلمة المرور والاسم عند إدخالها وتحويلها إلى شفره يتم استعادتها عند الدخول مره اخرى ... وقد تم عمل مثال عليها بعد التشفير ولكنى لم أعثر عليه ...

هذا كل شيء

أتمنى أن أكون وفيت الشرح حقه فسلت أنا من صنع المثال ولذلك ما تجدونه من أخطاء فأرجوا تصحيحها دون سابق إنذار فلست خبيراً كما تظنون ولكني أجتهد فحسب أعانني الله وإياكم وأعاد إلينا أبو عقيل سالماً وأتمنى ألا يزعل على لأني أسأت بهذا الشرح السيء لمثالة الذي يعد من أجمل موضوعات البرمجة وهي الصلاحيات ......

مع تحياتي

أخوكم رضا عقيل

#74

دائما انت كريم يا استاذ /رضا شرح جميل ومميز بارك الله فيك وجعلة فى ميزان حسناتك واعطاك الصحة والعافية يارب العالمين(f)(f)(f)(f)(f)(f)

80.gif

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

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

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

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

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

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