الدرس رقم 3
بسم الله الرحمن الرحيم
سنتعلم اليوم مهارات جديده ولكن ليست على قواعد البيانات ولكنها اساليب تساعدك لانتاج برنامج قوي صالح للعمل تحت اي بيئه عمل وفي يد اي مستخدم سواء كان مبتدئ ام محترف
في البدايه احب ان انوه الى ان الاوامر التي سبق ان تعلمناها في الدرس الاخير ليست هي كل سطور البرنامج التي ستوضع داخل الحدث ولكن هناك سطور ينبغي اضافتها وتعلمها لانها لاغنى عنها لاي مبرمج تعلو نوضح الامر بشكل عملي
كبدايه ارجوا ضبط الخاصييه enabled الخاصه بالزر حفظ على الوضع false وذلك لقفلها امام المستخدم لانه لو فكرنا منطقيا لوجدنا هناك عيبا خطيرا فقد يقوم المستخدم بالضغط على حفظ قبل امر جديد فيؤدي الى ضهور رساله خطاء وخروج البرنامج خروجا غير لائق ببرنامج محترف (يمكنك تنفيذ البرنامج ومعرفه امكانيه حدوثه من عدمه كما يمكنك قراءه نص الخطاء ومعرفته)
بالنسبه لزر جديد:-
ماذا يحدث عندما تقوم بالضغط على هذاا الزر؟
يجب ان تسال نفسك هذا السؤال في كل مره تحاول فيها عمل اي برنامج وذلك تجنبا لاي اخطاء برمجيه او منطقيه
وفي حالتنا هذه يوجد خطاء برمجي وهو:-
اذا كتبت الكود الخاص بامر جديد كما تعلمنا في السابق وتركته على ما هو عيه فماذا يحدث؟ سوف تقوم الداتا كنترول باخبار قاعده البيانات بتجهيز حقل جديد لوضع بيان او عده بيانات جديده لكن لو لم تضغط هذا الزر وقام المستخدم بالكتابه الفوقيه على احدى البيانات فانها سوف تقوم تلقائيا بالتعديل في البيانات داخل قاعده اليانات (العيب الاساسي للداتا كنترول) ولذلك يجب اغلاق هذا الخطاء ويتم ذلك من خلال خاصيه (enable) لصناديق النصوص داخل الفورمه كي لايتمكن المستخدم من التعديل بها وحرصا على بيانات هذه القاعده
وسيكون الكود الجديد كالاتي:
ملهوظه يتم ضبط الخاصيه enable لجميع صناديق النص بالقيمه false في بدايه التحميل كي تكون هي الخاصيه الاساسيه لتلك الكائنات
ولكن اثناء سير البرنامج يجب على المستخدم ادخال النصوص فيها لذا يجب فتحها لكي تستقبل البيانات لذا نقوم بضبط الخاصيه enabled بالقيمه true كما ياتي:-
Data1.recordset.addnew
Text1.enable-= true
Text2.enable= true
………………..
الخ
بهذه الطريقه لن يتمكن المستخدم من ان يقوم بعمل اي تغير في اي بيان في قاعده البيانات بدون قصد فتكون قاعده البيانات في منا عن العبث وكما نرى بالشكل قمت باغلاق الخاصيه enabled فاصبحت صناديق النص مغلقه امام المستخدم كي لايقوم بتعديلها:-
ليس هذا كل شئ هناك الازرار جديد وحفظ ومسح وبحث , ماذا يحدث اذا قام المستخدم بعد ضغط زر جديد بان قام بالضغط على مسح او بحث ثم اراد ان يقوم بعمليه اتعديل فالحفظ بالتاكيد سيكون هناك خطاء ورسائل تخبر المستخدم بخراب بيت البرنامج بينما المستخدم يعتقد ان البرنامج غير صالح للعمل بالاضافه الى اننا قمنا باغلاق الخاصيه enabled للزر حفظ في البدايه فكيف سيتمكن المستخدم من الضغط عليه اذا كان لايعمل؟ الحل اضافه سطزر جديده الى البرنامج كالتالي : كود : Command1.enabled= false ' حتى لايضغط على الزر مرتين
Command2.enabled=true ' يمكن الزر حفظ من العمل
Command3.enabled = false ' لاغلاق زر مسح
Command4.enabled = false ' اغلاق زر بحث
سنقوم ايضا باضافه سطور لاغلاق الخاصيه enabled للازرار الاربعه الباقيه الامام والخلف والاخير والاول وكذلك يا حبذا لو قمت باغلاق زر خروج ايضا
هكذا اصبح الامر جديد جاهز للعمل , طبعا ستسالون ماذا يحدث الان ؟ ساقول بعد ان قام المستخدم بضغط زر جديد سيقوم بادخال البيانات الى البرنامج
وبعد ان ينتهي من الادخال سيقوم بضغط زر حفظ مالذي سيحدث في زر حفظ؟
زر حفظ:
يوجد امر واحد في زر حفظ والذي يقوم بادخال النصوص الى قاعده البيانات ( في الحقيقه هي تكون دخلت القاعده فعلا ولكن هذذا السطر اجراء روتيني فقط)
لكن كما قلنا نريد حمايه البيانتات وكذلك منع المستخدم من الحركات الاكروباتيه التي يقوم بها والتي من شانها افساد البرنامج اذن مالذي نضيفه هنا؟
طبعا بعد سطر
Data1.recordset.update
سنقوم باضافه السطور التي تلغي السطور في زر جديد
بالنسبه لصناديق النص نقوم باضافه سطور تغلق الصندوق فلا يتمكن المستخدم من ادخال النص بها كالاتي
Text1.enabled = false
Text2.enabled = false
……………………
الخ
مش ده وبس لازم نرجع الزراير اللي احنا فتحناها زي الاول
كود:
Command1.enabled = true
' بنقفله لاننا مش محتاجينه وزي ماكان الاول قبل ماCommand2.enabled = false
ندوس جديد’
والباقي زي منتو عارفين
هذا الحكي بالنسبه لموضوع المحافظه على البرنامج من عبث المستخدم
لكن في طرق بتطلع البرنامج بشكل شيك وفي نفس الوقت بتحمي قاعده البيانات من انها تكون فيها سطور فاضيه ازاي:
لو المستخدم مدخلش اي بيانات في الحقول هتحفظ على قاعده البيانات في حقل فاضي وراح تؤخذ منك مساحه على الفاضي ، طيب شو الحل ؟؟
اننا نعمله تحديد للحقول اللي لازم تكون مليانه على الاقل لان ممكن البيانات تكون ناقصه في بيان او اتنين مش مهمين زي اجنده التليفون ممكن تكون فيها 5 أرقم تليفون فلازم واحد يكون مليان على الاقل والباقي لا كمان الاسم لازم يكون محطوط والا مش هيكون هناك اي لازمه للي بنعمله بقى طيب ايه الحل ؟ اضيفو السطور دي واللي معموله بقاعده if
كود:
If text1.text = "" and text2.text = "" then
""لايوجد بيانات في الحقول الاساسيه برجاء ادخل بياناتMsgbox
Exit sub
End if
نقوم بوضع تللك السطور في بدايه الاجراء وذلك منعا لتنفيذ اي سطر ثم الخروج منه والذي يقوم بالخروج من الاجراء الفرعي بدون احداث اضرار
يعتبر زر جديد قد انتهى ولكن سنضيف اليه المزيد من القوه في دروس لاحقه
زر مسح :
قد لايكون المستخدم راغبا في مسح الشخص الذي يقوم بمسحه , ربما اخطاء او قام الشيطان بايعازه بذلك لوجود خلافات هنا ياتي دورنا لتنبيهه بان مايقوم به خطاء فلا يجب ان يستسلم لضعفه او غفلته لذا يجب عمل الاتي :
بقاعده if سنقوم بتنبيهه الى ما يحدث كالاتي:
كود:
dim x as string
) vbyesno ’ هل انت متاكد من انك تريد مسح البيانات ؟"")x = msgbox
if x= vbyes then
data1.recordset.delet
data1.*******
else
exit sub
end if
في السطور السابقه قمنا باخبار المستخدم بالتاكيد عليه قبل القيام بالمسح كي يكون متاكد بانه بصدد مايريد فعلا
هذا كل ما يتعلق بزر مسح حاليا في المستقبل سنقوم باضافه قوه اكبر له>ا الزر ولرساله التاكيد بالتحديد
زر بحث
لايوجد ما يستجد
زر امام
كان الكود على هذه الهيئه
Data1.recordset.movenext
ولكن ماذا لو وصل المؤشر الى نهايه القاعده ولم يجد شئ .؟ نعم رساله ايرور سيئه تظهر ولا نستطيع ايقافها لذا هناك الحل السحري لهذا القصور لانه لاشئ كامل الا الله سبحانه وتعالى لذا ابتكر المبرمجون سطرا اذا كتبناه يبقى البرنامج يعمل رغم وجود خطاء ولكنت ينصح بعدم استعماله بطكثره والا كانت عواقبه وخيمه هذا السطر هو
On error resume next
يقوم المبرمج هنا باخبار البرنامج انه في حاله وقوع خطاء فقم بتنفيذ السطر التالي وقم باهمال السطر الذي يحوي الخطاء
قم باضافه السطر الى كل من الازرار امام خلف و أول و أخر
وشاهد النتيجه قبل وبعد في حاله خلو قاعده البيانين من اي بيان وفي حاله امتلائها باي بيانات ولا حظ الفرق
هذا هو درس اليوم في الدرس القادم انشاء الله سنتعرف على كيفيه عرض البيانات في الداتا بوند جريد والتي ارتبطت ارتباطا وثيقا بالدالتا كنترول
ارجوا ان تكونو استفدتم من هذا الدرس
وشكرا جزيلا لكم
أنتظروني في الدرس الرابع
تقبلوا مني كل الاحترام و التقدير
أخوكم رامي مازن