![]() |
|
فيجوال بيسك - التعامل مع قاعدة بيانات أكسيس من خلال Dao - الجزء الأول والثاني - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4) +--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18) +---- قسم : قسم مقالات vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=29) +---- الموضوع : فيجوال بيسك - التعامل مع قاعدة بيانات أكسيس من خلال Dao - الجزء الأول والثاني (/showthread.php?tid=5590) |
فيجوال بيسك - التعامل مع قاعدة بيانات أكسيس من خلال Dao - الجزء الأول والثاني - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .المقدمة : هناك العديد من طرق التعامل مع قواعد البيانات ، ففيما تتربع التقنية الحديثة Ado.net على طرق التعامل مع قواعد البيانات في اصدارات .Net FrameWork فإن هناك مثيلاً لها في الفيجوال بيسك وهو الاصدارة الاقدم Ado ، فيما توجد طرق أخرى مثل RDO و DAO وهي الطريقة محور درسنا اليوم ، وهي واحدة من اقدم الطرق ، ولم تطلها يد التطوير التي طالت ADO على سبيل المثال لتخرج منها DAO.net . ويشرح هذا الدرس كيفية التعامل مع هذه التقنية من خلال قاعدة بيانات بسيطة جداً ، والدرس مقسم إلى ثلاثة اقسام : يتضمن القسم الأول محتويات قاعدة البيانات ، ومن ثم انشاء الواجهة الاساسية بالفيجوال بيسك وكيفية الربط مع قاعدة البيانات وانشاء قاعدة بيانات وقت التنفيذ Run Time . أما القسم الثاني فيحتوي على كيفية التعامل مع قواعد البيانات والأوامر الاساسية للحفظ والاضافة والتعديل وغيرها . أما الدرس الثالث فهو مختص بعرض البيانات الموجودة في درسنا على أداة MSFlexGrid ، وبعض العمليات عليها . ويختص الدرس الأخير بعمل عملية بحث مبسطة بدلالة الاسم ، أو رقم الهاتف . مع اتمام التعامل مع MSFlexGrid . الدرس : في البداية قم بانشاء قاعدة بيانات تحتوي على الحقول التالية : Nu : من النوع رقم Number ، وهو مثلاً رقم الموظف في الشركة . Fn : من النوع ( نص Text ) وهو خاص باسم الشخص . Te : وهو خاص برقم الهاتف ، وهو من النوع رقم Number ، وهذا الحقل أيضاً من المفضل وضعه على هيئة نص Text إلا أننا سنسخدمه على شكل رقم . ومن ثم قم بانشاء Form وضع فيه الأدوات التالية : * Text1,Text2,Text3 لعرض معلومات كل شخص . * Command من 1 إلى 4 ( الأول - السابق - التالي - الأخير ) . * Command من 5 إلى 8 ( تعديل سجل ، سجل جديد - انهاء بلا حفظ - حفظ ) . مع مراعاة أن يكون التمكين Enabled لكل من زري ( حفظ - بلا حفظ ) هو False . * Command من 9 إلى 12 ( حذف - خروج - عرض في جدول - عدد السجلات ) . وقم بانشاء Module ... اضغط على الفورم بزر الماوس الأيمن ، اختر Add ومن ثم Module . والآن سننتقل لمرحلة التعامل مع قاعدة البيانات . لبدء التعامل مع DAO لا بد من اضافة المكتبة الخاصة بالداو إلى المشروع الذي قمنا بانشاءه ، لذا من قائمة Project اختر Refrence واختر المكتبة : Microsoft Dao 3.6 Object Library أو أي اصدار اقدم ، إلا أن 3.6 هو الاصدار المفضل . والآن ، تقدم لنا DAO كائنات مختلفة للتعامل مع قواعد البيانات ، فهي توفر لنا Workspace لبدء العمل مع قاعدة البيانات مع الكائن Database والمختص بالتعامل مع ملف قاعدة البيانات ، RecordSet للتعامل مع الجداول ، TableDef للقيام بانشاء جداول وقت التنفيذ - أحد تطبيقاته - . والآن سنتعرف على Sub main() ؟ يوفر لنا الفيجوال بيسك امكانية بدء المشروع بواسطة هذه الاجراء والذي يتم تعريفه في Module ، ولذلك نقوم في هذا الاجراء بعمل المهام التي نحتاجها قبل البدء في تنفيذ الكود . من قائمة Project اختر Project Properties ، ومن ثم اختر Sub main من القائمة Startup . والآن سوف بتعريف عدد من المتغيرات Public وذلك بالشكل التالي : كود : Public D1 As Database* المتغيرات Public هي أحد أنواع الوصول للمتغيرات حيث يتم مشاهدة المتغيرات على مستوى المشروع . المتغير الأول خاص بقاعدة البيانات ، بينما متغيرات خاصان بالجداول ، وأخيراً متغير نصي String نخزن فيه مسار البرنامج الحالي . والآن سوف نقوم ببرمجة الاجراء main ، وسوف يحتوي على المهام التالي مرتبة : * معرفة مسار البرنامج . * إذا لم تكن قاعدة البيانات موجودة فإنه يقوم باستدعاء اجراء انشاء قاعدة بيانات جديدة . * بعد وجود قاعدة البيانات الجديدة أو الموجودة اصلاً ، القيام بازالة خاصية القراءة فقط من على الملف . * الاتصال بقاعدة البيانات . * اظهار الفورم الرئيسي للبرنامج . وهذا هو الكود ، وبين كل مهمة ومهمة أخرى هناك سطر . كود : Private Sub main()- انشاء ملف قاعدة البيانات . - بعد انشاء الملف ، انشاء الجداول والحقول داخلها . سنسمي المهمة الأولى CreateMyDatabase وسوف تقوم بالخطوات التالية مرتبة : * تعريف متغير خاص لقاعدة البيانات . * انشاء قاعدة البيانات - لاحظ تشابه الطريقة مع طريقة فتح قاعدة البيانات . * اغلاق قاعدة البيانات . * استدعاء الاجراء الثاني - انشاء الجداول والحقول داخلها - . * افراغ المتغيرات Varibles حتى لا تحجز مكاناً من الذاكرة . مجدداً هذا هو الكود : كود : Sub CreateMyDatabase(DB_Name As String)* تعريف TableDef لانشاء جدول من خلاله . وكذلك متغير من نوع ملف قاعدة بيانات . * فتح قاعدة البيانات التي انشأناها للتو . * تعريف TableDef على أنه منشأ للجداول داخل قاعدة البيانات ( ربطه بقاعدة البيانات ) . * البدء في اضافة الحقول . * اتمام عملية اضافة الجدول . وهذا هو الكود : كود : Sub CreateMyTableS(DBName)في هذا الدرس تعرفنا سوية على كيفية عمل كائن Dao ، وكيفية انشاء قاعدة بيانات من خلاله وقت التنفيذ . في الدرس القادم سوف نبدأ في التعامل مع قاعدة البيانات بإذن الله . * في الدرس الأخير سوف يكون ملف مرفق على جميع العمليات خلال الدروس بإذن الله . والسلام عليكم ورحمة الله وبركاته . فيجوال بيسك - التعامل مع قاعدة بيانات أكسيس من خلال Dao - الجزء الأول والثاني - RaggiTech - 14-10-12 بسم الله الرحمن الرحيم . المقدمة : في الدرس السابق تعلمنا طرق انشاء وربط قاعدة البيانات . وسوف نستمر بإذن الله خلال هذا الدرس في اكمال التعامل مع قواعد البيانات Access من خلال DAO الدرس : بعد ان قمنا بربط قاعدة البيانات في الدرس السابق ، وصلنا إلى السطر Form1.Show والذي سوف يظهر الفورم الأول باطلاق الحدث Event المسمى ب Load وأحداث أخرى . إلا أن الحدث Load هو انسب الأحداث لكتابة اسطر أوامرنا بالنسبة لهذا التطبيق . في هذا الحدث سوف نقوم بـ : * ربط الجدول الأول بقاعدة البيانات . * التأكد من عدد السجلات الموجودة ، فإذا كان هناك سجلات فإننا سنطلب الإجراء ShowData ، وإلا فإننا سوف نطلب الاجراء ShowNoData : كود : Private Sub Form_Load()والآن سوف نقوم بكتابة اسطر كل من حدثي ، ShowData ، و ShowNoData ، فكل ما في الإجراء Sub الأول هو قراءة القيم الحالية للسجلات ووضعها في أماكنها بالشكل التالي : كود : Private Sub showdata()كود : Private Sub shownodata()أوامر التنقل بين السجلات : تشترك جميع هذه الأوامر الأربعة في صيغة عامة ، فأولاً التأكد من وجود سجلات ، ومن ثم التأكد من أنني لست في حالة تعديل أو اضافة وذلك من خلال معرفة حالة زر أمر ( حفظ ) ومن ثم التأكد من أنني لست في البداية ( لأمر السابق ) وأنني لست في النهاية ( لأمر التالي ) ، ومن ثم تنفيذ الأمر ( MoveNext , MoveLast , MovePrevious , MoveFirst ) وأخيراً استدعاء ShowData . وهذه هي الأوامر للاجراءات الأربعة : كود : Private Sub Command1_Click()أوامر الإنشاء ، والتعديل ، وحفظ معلومات السجلات ، أو انهاء عملية التعديل والاضافة بلا حفظ . سوف نقوم في أمر انشاء سجل جديد بالتأكد أولاً أننا لسنا في حالة اضافة أو تعديل ، ومن ثم نقوم باستخدام أمر Addnew لفتح قاعدة البيانات للاستقبال ، ومن ثم تمكين كل من زري ( حفظ - انهاء بلا حفظ ) ومن ثم افراغ الخانات للمستخدم لادخال البيانات المطلوبة : كود : If Command8.Enabled = True Thenوبالنسبة لأمر التعديل فسوف يزيد نقطة واحدة فقط ، وهي التأكد من وجود سجلات أصلاً لتعديلها ، وأننا لن نقوم بافراغ مربعات النص TextBoxes ، مع مراعاة استخدام الأمر Edit بدلاً من AddNew : كود : If T1.RecordCount < 1 Then Exit Subفي الحفظ ، سوف نستخدم الأمر Update لتحديث التغييرات سواء كانت بالاضافة والتعديل ، مع الغاء تمكين Enabled لزري الحفظ - انهاء بلا حفظ . وأما في انهاء بلا حفظ فسوف نستخدم الأمر CancelUpdate . هناك اختلاف آخر وهو أننا نستخدم الدالة Val مع القيم الرقمية للتأكد من أن المستخدم قام بادخال أرقام وليس حروف مثلاً . وهذه هي أوامر هذين الاجراءين : كود : Private Sub Command7_Click()*** ملاحظة هامة : من الخطأ فتح قاعدة البيانات للاضافة AddNew أو للتعديل Edit وتنفيذ أمر الحفظ Update في حدث آخر مما يجعل قاعدة البيانات في حالة انتظار تطول أو تقصر ، مما قد يتسبب بمشاكل في حالة انقطاع التيار الكهربي أو اعادة تشغيل الجهاز على سبيل المثال ، والصحيح أن تتم الاضافة والحفظ وكذلك مع التعديل في اجراء واحد ، وإنما ما قمت به هو للتسهيل فقط ( وبصراحة فهذا الدرس قديم كتبته في البدايات وكسلت اعمله تعديل ) . نقطة أخرى ، وهو أن الغالب أن باقي الأزرار تتعطل Enabled = False ما عدا زري الحفظ حتى تنتهي عملية الاضافة . عرض عدد السجلات : نستخدم لهذا الغرض الدالة RecordCount والتي تعود بعدد السجلات الحالية . وذلك بالشكل التالي : كود : nom = T1.RecordCountالحذف : كما هي العادة سوف نتأكد أولاً بأننا لسنا في وضع اضافة أو تعديل ، وذلك بعد التأكد من وجود سجلات أصلاً . في الخطوة التالية سوف نعرض على المستخدم رسالة تحذيرية من اتمام العملية ، وفيما إذا اصر على اتمام العملية فإننا سوف نقوم باستخدام الدالة Delete لحذف السجل ، ومن ثم الانتقال للسجل التالي حتى لا نبقى في سجل فارغ . أو اظهار عدم وجود سجلات في حالة كان السجل المحذوف هو السجل الأخير . كود : Private Sub Command9_Click()خاتمة : في هذا الدرس تعرفنا سوية على كيفية التعامل واجراء عمليات قواعد البيانات المختلفة من خلال DAO . في الدرس القادم سوف نتعرف بإذن الله على كيفية التعامل مع الجداول من نوع MSFlexGrid . والسلام عليكم ورحمة الله وبركاته . |