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

الصلاحيات و المستخدمين في برنامجك

رائج
بدأه nasser50001 في 3 يوليو 2005 · 221 رد · 74,376 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#26

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

درس متميز من شخص متميز

انا ايضا افضل البى دى اف وشكراً على الشرح السهل والجميل وفى انتظار باقى الهدايا منك بمشاركة بنت اليمن :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#27

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

ماهذا الحظ "الأخناصر وبنت اليمن " :) في آن واحد

بارك الله فيكم و ابقاكم الله زخراً لهذا الون , أقصد المنتدي :)

gaza3-3.jpg
#28

فى انتظار ابداعات الاخ ناصر والاخت بنت اليمن

اعتقد انها ستكون من افضل الابداعات فى المنتدى

وانا اعتقد ايضا ان الpdf افضل

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#29

بارك الله فيك اخى الكريم

و زاد الله ميزان حسناتك بما سوف تعلمه لنا

#30

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

اختي بنت اليمن

انا اسعد بهذا التعاون وإن شاء الله تكون دورة مفيدة للجميع

أخي حمادة ELKING

جزاك الله خير على مرورك وكلماتك

أخي محمد GHOST2010

شهادة نعتز بها من خبير متميز مثلك وإن شاء الله نكون عند حسن الظن

أخي ابراهيم

إن شاء الله نكون ثنائي متميز

اخي هاني

مشكور اخي الفاضل واعذرني لعدم المتابعة في مشروعك بشكل كبير ولكن إن شاء الله ساتواجد معك قريبا

أخي mogasoft

مشكوووور

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

اخوكم ناصر

#31

الف شكر لك اخي على هذة الدروس الرائعة

اما بالنسبه للملف فانا اؤيد راي اخي القائل ان عرضها بالنتدي سيكون اكثر تشويقا لقارئ الموضوع

خطوات فيجوالية

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

التحزيم بواسطة Package & Deployment Wizard

أداة all date للتعامل مع الوقت

التعامل مع app.path دروس للمبتدئين

اصنع ocx من تصميمك لجميع احتيجاتك دروس للمبتدئين

شرح برنامج fack foder لحماية الفهارس

مواضيع اخرى

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

سجل بياناتك للاشتراك في رابطة المبرمجين المصريين, للاخوة المصريين او العرب المقيمين بمصر

عني = about me

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

مدونتي مصري للنهاية

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

على اسم مصر التاريخ يقدر يقول ما شاء ............... انا مصر عندي احب و اجمل الاشياء

#32

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

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

انتظروووا اختنا بنت اليمن

تحياتي لكم

اخوكم ناصر

#33

السلام عليكم

كلنا فى الانتظار

جزاك الله خيرا انت والاخت بنت اليمن

:rolleyes:

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#34

الدرس الثاني / بناء شاشة صلاحيات المستخدمين – الجزء الأول

مقدمة :

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

سوف نتطرق في هذا الدرس إلى كيفية إنشاء شاشة الصلاحيات و التعامل معها و التي تتمثل وظيفتها الرئيسية في كيفية إضافة مستخدم جديد إلى النظام – و ذلك من قبل مدير النظام Admin – و من ثم كيفية تحديد صلاحيات ذلك المستخدم الجديد (مع إمكانية الحذف أو التعديل في المستقبل على ذلك المستخدم أو صلاحياته)

كبداية : تطرقنا في الدرس الأول إلى جدول الصلاحيات و المستخدمين (من قاعدة البيانات dsecure) و الذي سوف يحتوي على تفاصيل المستخدم التي تلزمه عند الدخول إلى النظام (اسم المستخدم + كلمة المرور) و كذلك رقم الموظف في حال أن أردنا نربط هذا الجدول بعلاقة مع أي جدول آخر من قاعدة البيانات للنظام الخاص بنا ، و كذلك فإن هذا الجدول يحتوي على الصلاحيات المتاحة للمستخدم

25_07_05_02_12_38_11223259581.JPG[

أولاً : جدول المستخدمين و الصلاحيات (user_tab)

الغرض من الجدول : تخزين أسماء ( و أرقام المستخدمين ) مع كلمة المرور الخاصة بكل مستخدم للنظام ... و كما ذكرنا سابقاً ، فإن هذا الجدول يخزن الصلاحيات المتاحة لكل مستخدم و لكن على شكل حقول من النوع Yes\No (Boolean) ، حيث أن القيمة True-Yes تعني أن الصلاحية متاحة ، و القيمة False-No تعني أن الصلاحية غير متاحة .

لاحظ معنا الشكل العام لجدول المستخدمين و الصلاحيات و الذي أسميناه user_tab (انتبه إلى اسم قاعدة البيانات – اسم الجدول الخاص بالصلاحيات – أسماء الحقول التي يحتويها جدول الصلاحيات ، لأن تلك التفاصيل تساعدك على فهم شفرة – كود – نموذج برنامج الصلاحيات) .

ثانياً : الوصول إلى شاشة التحكم بالمستخدمين و الصلاحيات

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

25_07_05_01_42_31_1122324151_.JPG

و قبل الدخول إلى شاشة الصلاحيات ، لابد من التطرق إلى شيء مهم جداً ، و هو ما هو الشيء الذي نريد تحديد الصلاحية عليه (أي تحديد الوصول إليه) ؟؟

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

من خلال هذا الدرس سوف نفترض التالي :

• أن لدينا شاشتين (نموذجين 2 Forms) ، النموذج الأول و النموذج الثاني .

• كلاً من النموذج الأول و النموذج الثاني يحتوي على الأوامر الرئيسية (الإضافة و الحذف و التعديل) .

• المهام التي نريد وضع صلاحيات وصول إليها ستكون كالتالي :

o الدخول إلى شاشة النموذج نفسها

o تنفيذ احد المهام الرئيسية للنموذج (الإضافة أو الحذف أو التعديل)

لاحظ معنا نموذج للشاشة الاولى :

25_07_05_01_46_30_11223243903.JPG

ملاحظة : إذا رجعت إلى الجدول الخاص بالمستخدمين و الصلاحيات ، سوف تجد أن هذه الأمور مفصلة في حقول الجدول على هيئة صلاحيات :

25_07_05_01_47_53_11223244734.JPG

ثالثاًً : تصميم شاشة التحكم بالمستخدمين و الصلاحيات

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

• العمليات الرئيسية على المستخدمين :

o إضافة مستخدم جديد .

o التعديل على بيانات مستخدم موجود (كتغير كلمة السر) ، أو التعديل على صلاحيات ذلك المستخدم .

o حذف مستخدم من النظام (عملية أحبها جداً  ).

o الحفظ (و الذي يجرى بعد عملية الإضافة أو التعديل ).

• كذلك فإن شاشة التحكم بالمستخدمين و الصلاحيات سوف تحتوي على تفاصيل الصلاحيات من اجل أن يتم تحديدها بسهولة عند إدخال مستخدم جديد .

• و أيضا سوف تحتوي هذه الشاشة على قائمة المستخدمين المتواجدين حالياً من اجل تسهيل تحديد مستخدم عن إجراء عملية التعديل أو الحذف ..

• و أخيرا ، سوف تحتوي على مربع خيار إتاحة جميع الصلاحيات للمستخدم جديد (محظوظ) ، من باب توفير عملية التأشير على الصلاحيات (و حتى لا نتعب المستخدم معنا أكثر !!!! )

هل أنت متشوق معنا بما يكفي للتعرف على شاشة التحكم بالمستخدمين و الصلاحيات ؟؟؟ اذن لاحظ معنا الشكل القادم الذي يحتوي على تصميم شاشة التحكم بالمستخدمين و الصلاحيات ...

25_07_05_02_07_43_11223256635.JPG

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

1. إدخال بيانات مستخدم جديد :

1.1. رقم المستخدم يتم إدخاله تلقائياً .

1.2. إدخال اسم المستخدم .

1.3. إدخال كلمة المرور .

1.4. التأكيد على كلمة المرور .

2. قائمة المستخدمين الحاليين (من اجل عملية التعديل أو الحذف )

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

4. خيار لإتاحة الصلاحيات كلها للمستخدم .

5. العمليات الرئيسية التي تجرى على المستخدمين .

تطبيق الدرس الثاني :

• قم بإنشاء نموذج للنظام المراد إضافة شاشة الصلاحيات إليه ..

• أنشئ تصميم شاشة الصلاحيات كما هو موضح في الشكل رقم (5) .

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

الدرس القادم بإذن الله سوف يتناول كيفية تصميم الشفرات الخاصة بالعمليات الرئيسية لشاشة التحكم بالمستخدمين و الصلاحيات ..

انتهي الدرس الثاني بحمد الله

مع تحيات : nasser50001 (ناصر) و بنت اليمن

منتدى الفريق العربي للبرمجة

تم تعديل هذه المشاركة بواسطة بنت اليمن في 26 يوليو 2005 في 00:14

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#35

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

ما شاء الله تبارك الله علي الدروس القمية و المميزة , من ناس مميزين

:)

gaza3-3.jpg
#36

ما شاء الله تبارك الله

درس رائع جدا جدا

بارك الله فيك أختي الكريمة بنت اليمن وجعل ما تقومين به في ميزان حسناتك

منتظرين تعليق الأخوة الكرام واعتقد اختنا بنت اليمن ايضا تنتظر أسئلتكم واستفساراتكم

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

اخوكم ناصر

#37

ماشاء الله اخي ناصر واختي بنت اليمن على هذه الدروس بالفعل رائعة من عضوين رائعين زادنا و زادكم الله من علمه

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

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

مصطفى زيداني

#38

جزاكم الله الف خير

ناصر & بنت اليمن

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

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

مفكرة الإسلام؛ طالع أخبار العالم وأخبار المجاهدين بعيدا عن التعتيم الاعلامي.

#39
اقتباس
جزاكم الله الف خير

ناصر & بنت اليمن

أشهد أن لا إله إلا الله ***************** وأشهد أن محمد عبده ورسوله

#40

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

#41

للرفع

#42

بالفعل يستحق الرفع :)

gaza3-3.jpg
#43

شكرا على الدروس الرائعه

#44

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

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#45

الدرس الثالث / بناء شاشة صلاحيات المستخدمين – الجزء الثاني

العمليات الرئيسية على المستخدمين و الصلاحيات

تقــديم :

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

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

o إضافة مستخدم جديد .

o التعديل على بيانات مستخدم موجود (كتغير كلمة السر) ، أو التعديل على صلاحيات ذلك المستخدم .

o حذف مستخدم من النظام .

و قبل التطرق إلى شرح تلك العمليات ، ينبغي التطرق إلى نقطة هامة ...

- التعامل مع شاشة الصلاحيات يعني أننا نتعامل مع الجدول user_tab السابق شرحه (في الدرس الأول و الثاني) ، حيث أن العمليات التي (الإضافة و الحذف و التعديل) تجري في الأصل على بيانات هذا الجدول ، و هذا ما ينقلنا إلى النقطة التالية ....

- عند الدخول إلى النظام ، ينبغي إجراء اتصال مع قاعدة البيانات secuer (أو قاعدة البيانات التي تحتوي على الجدول الذي يخزن المستخدمين و صلاحياتهم ) و ذلك كما يلي :

Public db As New ADODB.Connection   ' متغير عام داخل وحدة نمطية – موديول

If db.State = adStateOpen Then db.Close

st = "provider = microsoft.jet.OLEDB.4.0;"
st = st & "data source =" & App.Path & "\dsecuer.mdb"
db.ConnectionString = st
db.CursorLocation = adUseClient
db.Open

شرح الكــود :

كبداية تم الإعلان عن متغير (كائن بالمعنى الأصح ) هو db و ذلك من اجل أن يتم من خلاله توصيف عملية الاتصال بقاعدة البيانات ، ثم لاحظ أننا في بداية تأكدنا انه لا يوجد اتصال سابق مع قاعدة البيانات عن طريق هذا المتغير و ذلك لأنه يحدث خطأ برمجي عندما تفتح قاعدة البيانات و هي أصلاًُ مفتوحة !!!

بعدها تم الاتصال بقاعدة البيانات بحسب الخطوات المعتادة ..

ملاحظات :

- تم استخدام المكتبة ADO للاتصال و التعامل مع قاعدة البيانات secuer .

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

الآن نصل إلى شاشة الصلاحيات نفسها ...

عند فتح شاشة الصلاحيات لابد أن يجرى اتصال مع الجدول user_tab من اجل التعامل مع بياناته ، و ذلك على النحو التالي :

Dim rsuse As New ADODB.Recordset

If rsuse.State = adStateOpen Then rsuse.Close
rsuse.Open "user_tab", db, adOpenDynamic, adLockOptimistic

شرح الكــود :

و هنا كبداية تم الإعلان عن متغير (كائن بالمعنى الأصح ) هو rsuse و ذلك من اجل أن يتم من خلاله توصيف عملية بالجدول user_tab ، ثم تم التأكد انه لا يوجد اتصال سابق مع الجدول user_tabباستخدام المتغير rsuse و ذلك من خلال الأمر rsuse.State ، فإذا كان هناك اتصال سابق يتم غلقه (لتجنب الأخطاء البرمجية الناتجة عن فتح جدول مفتوح أصلاً) و من ثم إنشاء اتصال جديد من الجدول user_tab من قاعدة البيانات secuer ..

الآن نستطيع التحدث عن العمليات الرئيسية ...

أولاً / إضافة مستخدم جديد :

إضافة مستخدم جديد تعني أننا (و بكل بساطة) نضيف سجل جديد إلى الجدول user_tab ، و عناصر هذا السجل هي عبارة عن : رقم المستخدم (حقل رقمي) اسم المستخدم ( حقل نصي) و كلمة المرور (حقل نصي) و الصلاحيات (حقول من النوع Yes\No أو Boolean) ..

يتم إدخال اسم المستخدم الجديد و كلمة المرور إلى مربعات نص Textbox و الصلاحيات إلى مربعات الخيار Checkbox ..

ملاحظة :

- يتم إنشاء رقم المستخدم الجديد بشكل تلقائي ، و ذلك من خلال استرجاع اكبر رقم (من أرقام المستخدمين ) في الجدول user_tab ثم إضافة واحد إلى الرقم العائد و جعل الرقم الناتج من عملية الجمع يمثل رقم المستخدم الجديد (و هنا نستخدم متغير جديد –كائن – و نسميه rs2 من اجل الارتباط بالجدول user_tab الغرض منه فقط إرجاع اكبر رقم من أرقام المستخدمين فقط ) .... و في حالة أن المستخدم الجديد هو أول سجل نقوم بالطلب من المستخدم – و الذي هو مدير النظام- أن يدخل هو رقم المستخدم ...

- قبل إضافة البيانات إلى الجدول user_tab ينبغي التأكد من :

- انه تم إدخال البيانات كاملة .

- أن هذا المستخدم ليس موجود من قبل (و ذلك عن طريق التحقق من الرقم غير من موجود من قبل) .

- التأكد من كلمة المرور تتطابق التأكيد على كلمة المرور .

لاحظ معنا كــود عملية الإضافة :

If rsuse.RecordCount = 0 Then
user_no.Text = InputBox("ادخل رقم المستخدم")
Else
If rs2.State = adStateOpen Then rs2.Close
rs2.Open "select max(user_no) from user_tab", db, adOpenDynamic, adLockOptimistic
user_no.Text = rs2.Fields(0) + 1
End If


If user_name = "" Or password = "" Or password2 = "" Then
MsgBox "لم يتم ادخال البيانات كاملة", vbOKOnly + vbMsgBoxRight + vbMsgBoxRtlReading, "اكمل البيانات"

user_name.SetFocus
Exit Sub
End If

If password.Text <> password2.Text Then
MsgBox "كلمتي المرور غير متطابقة .. تعد المحاولة", vbOKOnly + vbMsgBoxRight + vbMsgBoxRtlReading, "اعد المحاولة"


password  = ""
password2  = ""
password.SetFocus
Exit Sub
End If

rsuse.Find "user_no=" & Val(user_no.Text), 0, adSearchForward, 1
If Not rsuse.EOF Then
MsgBox "هذا المستخدم موجود من قبل ... اضغط زر التعديل", vbOKOnly + vbMsgBoxRight + vbMsgBoxRtlReading, "مستخدم موجود"
Exit Sub
End If

و بعد كل تلك الإجراءات الحاسمة ، تتم عملية الإضافة بسلام :) كما يلي :

rsuse.AddNew

rsuse!user_no = Val(user_no)
rsuse!user_name = user_name
rsuse!password = password
If form1_open.Value = 1 Then
rsuse![form1_s1] = True
ElseIf form1_open.Value = 0 Then
rsuse![form1_s1] = False
End If
If form1_save.Value = 1 Then
rsuse![form1_s2] = True
ElseIf form1_save.Value = 0 Then
rsuse![form1_s2] = False
End If
If form1_upd.Value = 1 Then
rsuse![form1_s3] = True
ElseIf form1_upd.Value = 0 Then
rsuse![form1_s3] = False
End If
If form1_del.Value = 1 Then
rsuse![form1_s4] = True
ElseIf form1_del.Value = 0 Then
rsuse![form1_s4] = False
End If
If form2_open.Value = 1 Then
rsuse![form2_s1] = True
ElseIf form2_open.Value = 0 Then
rsuse![form2_s1] = False
End If
If form2_save.Value = 1 Then
rsuse![form2_s2] = True
ElseIf form2_save.Value = 0 Then
rsuse![form2_s2] = False
End If
If form2_upd.Value = 1 Then
rsuse![form2_s3] = True
ElseIf form2_upd.Value = 0 Then
rsuse![form2_s3] = False
End If
If form2_del.Value = 1 Then
rsuse![form2_s4] = True
ElseIf form2_del.Value = 0 Then
rsuse![form2_s4] = False
End If

rsuse.Update
MsgBox "تم حفظ السجل", vbOKOnly + vbMsgBoxRight + vbMsgBoxRtlReading, "حفظ"

لاحظ : أننا مرننا على كل مربعات الاختيارات ، ثم قمنا بقراءة قيمتها إلى الجدول user_tab فإذا كان مربع الاختيار مؤشر عليه فهذا يعني أن الصلاحية متاحة و يتم تخزين Yes في الجدول user_tab و في حالة أن مربع الاختيار غير مؤشر عليه فهذا يعني ان الصلاحية غير متاحة و يتم تخزين No في الجدول user_tab .

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

يتبع ...،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#46

مشكور اختي بنت اليمن

درس أكثر من رائع اختي بنت اليمن

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

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

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

اخوكم ناصر

#47

نـــــــــــــــــــــــتابع

ثانياً / تعديل بيانات مستخدم موجود :

لتعديل بيانات مستخدم موجود ، نقوم في البداية بتحديد اسم ذلك المستخدم من القائمة التي تعرض أسماء المستخدمين الحاليين و ذلك من شاشة التحكم بالصلاحيات (الموضحة بالشكل رقم (5) من الدرس الثاني – الجزء الأول) ، لاحظ معنا الشكل التالي الذي يوضح الجزء الخاص بعرض المستخدمين الحاليين في شاشة التحكم بالصلاحيات :

01_08_05_02_36_20_11228889808.JPG

بعد أن نقوم بتحديد المستخدم المطلوب التعديل على بياناته ، فإن بياناته تعرض من اجل التعديل عليها ، فمثلاً : لو اخترنا المستخدم nasser فإن شاشة الصلاحيات تعرض البيانات الخاصة بالمستخدم nasser ، كما هو موضح في الشكل التالي :

01_08_05_02_38_45_1122889125exp.JPG

السؤال الآن هو: كيف نعرض تلك البيانات ؟؟

و ذلك يتم (و بكل بساطة ) ، بأنه عند الضغط على القائمة الخاصة بالمستخدمين (و التالي هي عبارة عن DataList مرتبطة بالجدول user_tab و بالتحديد إلى الحقل user_name )، نقوم بالبحث عن المستخدم الذي يحمل هذا الاسم كما يلي :

rsuse.MoveFirst
rsuse.Find "user_name='" + CStr(dl1.Text) + "'", 0, adSearchForward, 1

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

user_no = rsuse!user_no
user_name = rsuse!user_name
password = rsuse!password
password2 = password
rsuse!user_no = Val(user_no)
rsuse!user_name = user_name
rsuse!password = password

و لعرض الصلاحيات نقوم بما يلي :

If rsuse![form1_s1] = True Then
form1_open.Value = 1
ElseIf rsuse![form1_s1] = False Then
form1_open.Value = 0
End If
If rsuse![form1_s2] = True Then
form1_save.Value = 1
ElseIf rsuse![form1_s2] = False Then
form1_save.Value = 0
End If
If rsuse![form1_s3] = True Then
form1_upd.Value = 1
ElseIf rsuse![form1_s3] = False Then
form1_upd.Value = 0
End If
If rsuse![form1_s4] = True Then
form1_del.Value = 1
ElseIf rsuse![form1_s4] = False Then
form1_del.Value = 0
End If
If rsuse![form2_s1] = True Then
form2_open.Value = 1
ElseIf rsuse![form2_s1] = False Then
form2_open.Value = 0
End If
If rsuse![form2_s2] = True Then
form2_save.Value = 1
ElseIf rsuse![form2_s2] = False Then
form2_save.Value = 0
End If
If rsuse![form2_s3] = True Then
form2_upd.Value = 1
ElseIf rsuse![form2_s3] = False Then
form2_upd.Value = 0
End If
If rsuse![form2_s4] = True Then
form2_del.Value = 1
ElseIf rsuse![form2_s4] = False Then
form2_del.Value = 0
End If

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

بعد أن نقوم بتعديل البيانات فلابد لنا من حفظ البيانات بعد التعديل في قاعدة البيانات ، و هذا ما يقوم به الكــود التالي :

rsuse.MoveFirst
rsuse.Find "user_no=" & Val(user_no.Text), 0, adSearchForward, 1
If Not rsuse.EOF Then

'--------------------------------------------------------
rsuse!user_no = Val(user_no)
rsuse!user_name = user_name
rsuse!password = password
If form1_open.Value = 1 Then
rsuse![form1_s1] = True
ElseIf form1_open.Value = 0 Then
rsuse![form1_s1] = False
End If
If form1_save.Value = 1 Then
rsuse![form1_s2] = True
ElseIf form1_save.Value = 0 Then
rsuse![form1_s2] = False
End If
If form1_upd.Value = 1 Then
rsuse![form1_s3] = True
ElseIf form1_upd.Value = 0 Then
rsuse![form1_s3] = False
End If
If form1_del.Value = 1 Then
rsuse![form1_s4] = True
ElseIf form1_del.Value = 0 Then
rsuse![form1_s4] = False
End If
If form2_open.Value = 1 Then
rsuse![form2_s1] = True
ElseIf form2_open.Value = 0 Then
rsuse![form2_s1] = False
End If
If form2_save.Value = 1 Then
rsuse![form2_s2] = True
ElseIf form2_save.Value = 0 Then
rsuse![form2_s2] = False
End If
If form2_upd.Value = 1 Then
rsuse![form2_s3] = True
ElseIf form2_upd.Value = 0 Then
rsuse![form2_s3] = False
End If
If form2_del.Value = 1 Then
rsuse![form2_s4] = True
ElseIf form2_del.Value = 0 Then
rsuse![form2_s4] = False
End If
'--------------------------------------------------------

rsuse.Update
End If
MsgBox "تم تعديل السجل", vbOKOnly + vbMsgBoxRight + vbMsgBoxRtlReading, "تعديل"

شرح الكــود :

نقوم أولاً بالبحث في الجدول user_tab عن السجل الذي يحمل الاسم المطلوب ، و بعد الوقوف عليه نقوم بإدخال البيانات إليه مرة أخرى و هي معدلة و بعدها نقوم بحفظ التعديل مرة أخرى عن طريق الأمر rsuse.Update ..

ملاحظة هامة جداً :

لاحظ أننا لإدخال البيانات إلى الجدول user_tab في عمليتي الإضافة و التعديل استخدمنا نفس الكود ، و لهذا فإنه يفضل أن يوضع هذا الجزء في إجراء (دالــة) و يخزن تحت اسم ما و ليكن save_rec و يستدعى في كل مرة نريد أن ندخل بيانات إلى السجل الحالي من الجدول user_tab . (و هذا ما يوضح فوائد الدوال و الإجراءات) .

و بهذا نكون قد انهينا شرح عملية التعديل إلى بيانات مستخدم و صلاحياته ، و بسلام :)

ثالثاً / حذف مستخدم موجود :

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

Dim r As Integer
r = MsgBox("هل تريد حذف المستخدم الحالي", vbYesNo)
If r = vbYes Then
rsuse.MoveFirst
rsuse.Find "user_no=" & Val(user_no.Text), 0, adSearchForward, 1
If Not rsuse.EOF Then
rsuse.Delete
End If
Else
Exit Sub
End If

شرح الكــود :

نقوم أولاً بسؤال المستخدم ما إذا كان متأكد من عملية الحذف ، و بعد أن يؤكد المستخدم ذك نقوم بالبحث عن السجل المطلوب حذفه في الجدول user_tab و بعد الوقوف عليه نستخدم الأمر rsuse.Delete للحذف ... فقط !!!

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

تطبيق على الدرس الثاني :

قم بإنشاء الإجراءات (الدوال) التالية :

- إجراء يقوم بإدخال البيانات إلى السجل الحالي من الجدول user_tab و ليكن اسم هذه الدالة هو save_rec .

- إجراء يقوم بعملية الإضافة ، و يستدعي الإجراء save_rec .

- إجراء يقوم بالتعديل على بيانات المستخدم الحالي ، و يستدعي الإجراء save_rec .

- إجراء يقوم بعملية حذف مستخدم من النظام .

الدرس القادم بإذن الله سوف يتناول كيفية الدخول إلى النظام باستخدام اسم المستخدم و كلمة المرور من ثم تطبيق صلاحياته فقط ..

انتهي الدرس الثالث بحمد الله

مع تحيات : nasser50001 (ناصر) و بنت اليمن

منتدى الفريق العربي للبرمجة

تم تعديل هذه المشاركة بواسطة بنت اليمن في 1 أغسطس 2005 في 12:42

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#48

اشكرك اخي الكريم ناصر و بارك الله فيك ... وجعله في موازيننا جميعاً :)

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 1 أغسطس 2005 في 12:47

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#49

السلام عليكم

شكرا لكما وجعلها الله في موازين حسناتكم

لكن لو تضعون المشاركات في ملفات PDF يكون اجمل عند الرجوع اليه ويصبح مرجع انيق وهذا مجرد راي

وبارك الله فيكم

تزودوا فأن خيرا الزاد التقوى

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

#50

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

اخي Jamalbootruba

عقب الإنتهاء من الدروس كاملة سوف يوضع الملف الكامل للدورة في ملف pdf وكذلك التمارين المصاحبة والتطبيقات ستوضع معة مع صياغة الموضوع لعرض بوربوينت

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

1 - ان الموضوع معروف للجميع فلذلك لا يستحق القراءة ( وهذا طبعا مستحيل لأن هناك خبراء ومبتدأين ) فالمرجو من الخبراء ألا يبخلو بالتشجيع لإثراء الموضوع وهو في نفس الوقت سيتناول موضوعات قد لا يكون تعرضو لها من قبل .

2- واما أن الموضوع قليل الفائدة ( فيقول الأخوة أن الموضوع غير مجدي أو ليس له أهمية حتى لا نجد انفسنا ( اقصد الأخت بنت اليمن وانا ) نصنع دروس لأنفسنا ونحن نعرفها ( فيكون تضييعا لوقتنا ووقت اخواننا فيما لا طائل منه )

الله يعلم مقدار ضيق الوقت عندي ومشاغلي ( التي تجعلني غير متابع بصورة جيدة للمنتدى ولموضوعاته ودروسة والمشاركة فيها الا قليلا ) ولكن والله كلما حصلت على معلومة جديدة أو موضوع يستحق العرض الا وآثرت أن افيد به اخواني واخواتي بالمنتدى

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

اخوكم ناصر

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