م في هذا الدرس سوف نقوم بالتعرف على اهم الاوامر التي تجرى على قواعد البيانات من خلال الفيجوال بيسك كان اضافة سجلا , تعديل , حذف والبحث بين السجلات واضاهر عددها والتنقل فيما بينها سوف نبداء اولا بعمل قاعدة بيانات خاصة لنا كما وضحت سابقا تحتوي على جدول واحد بأسم Table1 وثلاثة حقول هي الاسم , العمر , عنوان السكن بعد الانتهاء من تصميم قاعدة البيانات ندخل على برنامج الفيجوال بيسك 6 لنقوم بوضع الاداوات الالزمه لتشغيل البرنامج سوف نقوم باضافة زر للحفظ وزر للتعديل وزر للحذف وازرار التنقل بين السجلات واضافة اداة DataControl وبعد ذلك والان سوف نقوم باضافة اداة لعرض السجلات تسمى بـ Microsoft Data Bound Grid تتم اضافة الاداة بكل سهولة بالضغط على زر CTRL + T من لوحة المفاتيح سوف فور ضغط الزر سوف يقوم برنامج الفيجوال بعرض مربع حوار خاص كما في الصورة ادناة نقوم باختيار الاداة منه
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]وبعد ذلك باضافتها على واجهة البرنامج لينتهي هنا تصميم شكل البرنامج ويظهر بهذا الشكل
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]ومن هنا نقوم بالبدء بعميلة الربط اولا نقوم بربط البرنامج بقاعدة البيانات كما وضحت في الدرس السابق وبعد الانتهاء من عملية ربط البرنامج بقاعدة البيانات نقوم بربط الاداة التي تقوم بعرض البيانات باداة الـ DataControl حتى تقوم بعرض البيانات منها بكل بساطة تتم عملية الربط من خلال الخاصية
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]حيث نقوم باختيار الاداة التي نود عرض البيانات منها وهنا وفور تنفيذ هذه العميلات بصورة صحيحة سوف نقوم بالانتقال خطوة والبدء بكتابة الاوامر الاساسية اولا نقوم بكتابة كود زر الحفظ تتم عميلة الحفظ في قاعدة البيانات اولا بكتابة جملة معينة لاعلام فيجوال بيسك باننا نود اضافة سجل جديد وبعد ذلك نصل الى عميلة اسناد القيم الى الحقول المعينة ومن ثم جملة لتحديث المدخلات وليكون الكود كله على بضعه بالشكل الاتي
- الكود:
-
Private Sub Command1_Click()
Data1.Recordset.AddNew
Data1.Recordset.Fields!الاسم= Text1.Text
Data1.Recordset.Fields!العمر= Text2.Text
Data1.Recordset.Fields!العنوان= Text3.Text
Data1.Recordset.Update
End Sub
حيث كما وضحت سابقا قمنا اولا باعلام برنامج فيجوال بيسك باننا نود ان نقوم بعميلة معينة وهي عميلة الحفظ في قاعدة البيانات بعد ذلك بدئنا بكتابة اسماء الحقول المعنية واضافة القيم لها ومن ثم تحديث المدخلات في قاعدة البيانات واذا لم تكتب هذه الجملة فلن يظهر عند السجل المضاف او التعديل اذا لم تقم باعداة تشغيل البرنامج وهنا انتهينا من اول كود وهو كود الحفظ الان للنتقل للكود التالي وهو كود التعديل وكود التعديل لا يختلف كثيرا عن سابقه حيث تكون العميلة بالشكل الاتي
- الكود:
-
Private Sub Command2_Click()
Data1.Recordset.Edit
Data1.Recordset.Fields!الاسم= Text1.Text
Data1.Recordset.Fields!العمر= Text2.Text
Data1.Recordset.Fields!العنوان= Text3.Text
Data1.Recordset.Update
End Sub
حيث العميلة نفسها والشرح نفسها ولكن في هذه المرة قمنا بطلب ان يقام بالتعديل السجل المتوقف عليه وان لا يضاف سجل جديد للنتقل الان لكود الحذف والذي سوف يكون بسيط جدا حيث يكتب بالشكل الاتي
- الكود:
-
Private Sub Command3_Click()
Data1.Recordset.Delete
End Sub
حيث بكل بساطة قمنا بتنفيذ امر لحذف السجل المحدد من قاعدة البيانات نهائيا مع ملاحظة انه لا يمكن استرجاع السجل بعد حذفه مطلقا بالنسبة لاكواد الانتقال بين السجلات سوف تكون كالاتي
- الكود:
-
Private Sub Command4_Click()
Data1.Recordset.MoveNext
End Sub
Private Sub Command5_Click()
Data1.Recordset.MoveFirst
End Sub
Private Sub Command6_Click()
Data1.Recordset.MovePrevious
End Sub
Private Sub Command7_Click()
Data1.Recordset.MoveLast
End Sub
لا يحتاج الى شرح الاكواد السابقة فلم نقم الا بطلب الانتقال ما بين السجلات على حد سواء يمكنك تجربة الاكواد كما ان كود التحقق من عدد السجلات هو
- الكود:
-
Private Sub Command8_Click()
MsgBox Data1.Recordset.RecordCount
End Sub
هذه هي اغلب الاوامر الشائعة الاستخدام كانت هذه مقدمه بسيطة عنها وسوف اقوم بالجزء التالي من الدرس بشرح كيفية تجاوز الاخطأ فيها واكثر
الاوامر الاساسية التحكم في قاعدة البيانات سوف يكون هذا الدرس عبارة عن درس ملحق بالدرس الرابع الجزء الاول وسوف يكون عن كيفية تثبيت مسار قاعدة البيانات وضمان ان البرنامج سوف يبقى متصل بفاعدة البيانات اينما وضع مجلد البرنامج سوف تعتمد طريقتا التالية على الدالة App.Path التي تعطي لنا قيمة نصية وهي مسار مجلد البرنامج الكود بصورة عامة يكون بالشكل الاتي
- الكود:
-
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\DataBase.mdb"
End Sub
جيث قمنا بالجملة السابقة بتحديد مسار قاعدة البيانات كما تعلمنا لكن هذه المره قمنا باستخلاص مسار مجلد البرنامج حتى نقوم بالربط حيث اولا استخدمنا الداله App.path والتي قامت باستخلاص مسار مجلد البرنامج بعدها علامة \ اي داخل البرنامج بعدها اسم قاعدة البيانات ونوعها
سوف يكون هذا الدرس كمتابعة لدرس السابق وقد حرصت على ان اقوم بعمل هذا الدرس لجعل برنامجك الذي سوف تصنعه اكثر مرونه وخالي من الاخطأ فمثلا ليس المستخدم مثلك انت صانع البرنامج فالمستخدم قد يضغط زر الحذف وهو غير محدد سجل او لا توجد سجلات في قاعدة البيانات لتظهر له رسالة الخطأ اما انت فاعرف بكودات البرنامج لن تقوم بهذه الخطوة لذا سوف نقوم بجعل البرنامج الذي قمنا بصنعه في الدرس السابق خالي من الاخطأ سوف نبدء من زر التعديل كل ما يلزمنا هنا التحقق من ان المستخدم قد اختار سجل ليقوم بتعديله وسوف نستخدم في هذا التحقق الخاصية AbsolutePosition التي تقوم باعطائنا رقم السجل المختار واذا لم يكن هنالك من سجل محدد سوف تكون القيمة عندئذ -1 اتصور ان الفكرة قد توضحت الان فكل ما يلزمنا هنا بان نكتب جملة التحقق بالشكل الاتي
- الكود:
-
If Data1.Recordset.AbsolutePosition = -1 Then
مثل ما ذكرت -1 تعني لا يوجد سجل محدد بالجملة السابقة تقوم بالتحقق واذا كان يساوي -1 اي لا يوجد سجل محدد لتعديل يقوم البرنامج بتنفيذ حدث معين فلو اردنا ان نضع كود التعديل كاملا سوف يكون بالشكل الاتي
- الكود:
-
Private Sub Command2_Click()
If Data1.Recordset.AbsolutePosition = -1 Then
MsgBox "Your Message"
Else
Data1.Recordset.Edit
Data1.Recordset.Fields!الاسم = Text1.Text
Data1.Recordset.Fields!العمر = Text2.Text
Data1.Recordset.Fields!العنوان = Text3.Text
Data1.Recordset.Update
End If
End Sub
فلو اردنا شرح الكود السابق : رح يكون الشرح كالاتي في السطر الاول قمنا بالتحقق هل هنالك سجل محدد لتعديله ام لا فاذا لم يكن هنالك سجل محدد فيقوم بالاتي وهو عرض رسالة للمستخدم اما اذا لم يتحقق الشرط اي كان هنالك سجل محدد فيقوم البرنامج بعملية التعديل
وفي هذه الحالة سوف نظمن عدم حصول خطأ في كود التعديل سببه عدم اختيار سجل وبعد جعل كود التعديل اكثر صلابة نقوم بالانتقال الى كود الحذف الذي سوف تكون جملة التحقق نفس الجملة السابقة ليكون الكود بالشكل الاتي
- الكود:
-
Private Sub Command3_Click()
If Data1.Recordset.AbsolutePosition = -1 Then
MsgBox "Your Message"
Else
Data1.Recordset.Delete
End If
End Sub
نفس العميلة التي قكمنا بها في كود التعديل قمنا بالتحقق من اختيار المستخدم وتنفيذ اوامر على حسب ذلك من هنا ضمنا سير البرنامج بصلابة من حفظ , تعديل , حذف بيانات فكر قليلا معي الان في كود الانتقال الى السجل الاول والاخير اذا كانت قاعدة البيانات فارغة واردنا الانتقال الى السجل الاول الذي سوف يكون غير موجود الن يحصل خطأ يقتل البرنامج بالتاكيد سوف يحصل اذن ما العمل العمل هو ان تمسك يدي ونقوم انا وانت بكتابة جملة التحقق من عدد السجلات والتي سوف نستخدم فيها الخاصية RecordCount التي ترجع قيمة رقمية وهي عدد السجلات في قاعدة البيانات وتبدء الترقيم من الصفر وبهذا سوف يكون الكود بالشكل الاتي
- الكود:
-
Private Sub Command5_Click()
If Data1.Recordset.RecordCount = 0 Then
MsgBox "Your Message"
Else
Data1.Recordset.MoveFirst
End If
End Sub
الموضوع سهل جدا لقد وضعنا شرط لتحقق من عدد السجلات فاذا كانت صفرا يقوم باظهار رسالة للمستخدم تقوم بتنبيه اما اذا كانت عدد السجلات اكثر من واحد فسوف يتنفذ الحدث بكل سلاسة وكذلك الكود سوف يكون بالنسبه لكود الانتقال الى السجل الاخير ونفس الشرط السابق انتهينا تقريبا ,, لكن هل تفكر بما افكر به بقى لدينا زرا امر وهي الانتقال الى السجل التالي والانتقال الى السجل السابق ما الخطأ الذي نتوقعه منهم الخطأ الذي نتوقعه هو ان يقوم البرنامج بالانتقال من السجل الاخير الى الفراغ اي يخرج من فهرسة وعند محاولة الانتقال سوف يظهر الخطأ لحل هذه المشكله سوف نقوم بوضع كود بسيط لتحقق من اذا كان البرنامج واقف على السجل الاخير فاذا كان واقف على السجل الاخير لا ينفذ حدث الانتقال حتى لا يخرج من الفهرسة واذا كان واقف على السجل الاول ويحاول الرجوع لا يسمح له بذلك سوف نقوم في هذان الكودان باستخدام الخواص Eof و Bof وكلتاهما تعطين قيم هي اما True او False والخاصية Eof هي لتحقق اذا كان البرنامج خارج اطار الفهرسة من بعد مروره على السجل الاخير والخاصية Bof لتحقق من اذا ما كان البرنامج خارج اطار الفهرسة بعد مروره على السجل الاول فسوف يكون الكود بكل بساطة كالاتي
- الكود:
-
Private Sub Command4_Click()
If Data1.Recordset.EOF = True Then
Your Command
Else
Data1.Recordset.MoveNext
End If
End Sub
هذا بالنسبة لكود الانتقال الى السجل التالي فكما نلاحظ اذا كان البرنامج خارج اطار الفهرسة لن يقوم البرنامج بتنفيذ الكود حتى لا يحصل الخطأ واما بالنسبة لكود الانتقال الى السجل السابق فسوف يكون بنفس الصيغة على اختلاف بسيط كالاتي
- الكود:
-
private Sub Command6_Click()
If Data1.Recordset.BOF = True Then
Your Command
Else
Data1.Recordset.MovePrevious
End If
End Sub