تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الخامس - تكوين الموديول واضافة والمكتبات الخاصة ب Dao والربط مع قواعد البيانات
#1
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .


في هذا الدرس وما يليه ، سوف نبدأ ببرمجة برنامج السوبر ماركت ، في هذا الدرس سوف نقوم بعمليات الربط مع قواعد البيانات .

كما سنضيف في هذا الدرس سوف نقوم باضافة المكتبات اللازمة للتعامل مع قاعدة البيانات .

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

من قائمة Project اختر Refernces ... ستظهر لك شاشة المكتبات المتوفرة ... لاحظ وجود أربع مكتبات افتراضية للفيجوال بيسك .
الآن ابحث عن المكتبة التالية :
Microsoft Dao 3.6 Object Library
أو أي اصدار أحدث - أو أقدم في حالة عدم وجوده - .
كما في الشكل التالي :


والآن لكي تعرف الطرق Methods والخصائص Properties التي تحتويها هذه المكتبة - أو غيرها - قم بالضغط على زر F2 ومن القائمة العلوية اختر Dao وانظر إلى القائمتين في الأسفل .
تحتوي القائمة اليسرى على المفاتيح الرئيسية لهذه المكتبة ، فيما تحتوي القائمة اليمنى على المفاتيح الفرعية .




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

لاحقاً يمكنك البحث عن هذه الدالة فقط ومعرفة كل شيء عنها من مكتبة MSDN مثلاً ... بدل البحث في كل ما يتعلق بقواعد البيانات .



تكوين محتويات الموديول
Module الرئيسية .


يعد الموديول أو الملف البرمجي وحدة برمجية عامة Public بحيث نستطيع الوصول إلى الدوال الموجودة فيها من أي مكان في البرنامج ، كما أننا يمكننا تعريف دالة Main بداخله بحيث تنفذ الأوامر الموجودة بداخلها قبل البدء في البرنامج .

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

عادة ما نبدأ في الموديول بانشاء اجراء بهذا الشكل :


كود :
Public Sub Main()

[b][align=right][FONT=Tahoma]End Sub


[/FONT]

[/align]
[/b]



ومن ثم ومن قائمة project - Project properties قم بالبحث عن StartUp Object والتي تحتوي على أول فورم سيتم البدء به ... اخترSubMain وبذلك تكون الدالة التي قمنا بإنشاءها هي الأولى في التنفيذ .





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


كود :
Public D1 As Database
Public D2 As Database


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


كود :
Public T1 As Recordset
Public T2 As Recordset
Public T3 As Recordset
Public T4 As Recordset
Public T5 As Recordset



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

يتبع ...
}}}
تم الشكر بواسطة:
#2
سنحتاج أيضاً لتعريف متغير عام بحيث نحتفظ فيه بمسار البرنامج لاستخدامه ضمن البرنامج ، وذلك بالشكل التالي :




كود :
Public Folder



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




كود :
Public Const PassWord = "VB4ARAB"



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

آخر ما نحتاج إليه هو متغير يحتوي على معلومات الجدول الأخير ، وفي هذه الحالة يمكننا عمل Array تحتوي على 5 أجزاء يمثل كل جزء منها أحد المعلومات ... وذلك بالشكل التالي :




كود :
Public Info(5)




قم ايضاً بكتابة الأمر التالي لتحويل الرسائل إلى أسلوب عرض اللغة العربية ، وهو ما شرحناه في دروس سابقة :




كود :
Public Enum arabic
arabic = vbMsgBoxRight + vbMsgBoxRtlReading
End Enum



الآن سنعود إلى الدالة التي قمنا بإنشاءها ونبدأ بالكتابة داخلها .
أول مهمة ينبغي أن يقوم بها البرنامج هو الحصول على المسار الحقيقي لقاعدة البيانات ، وذلك بالشكل التالي :




كود :
Folder = App.Path
If Right(Folder, 1) <> "\" Then Folder = Folder & "\"



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




كود :
If Dir(Folder & "db1.mdb") = "" Then
MsgBox "لم يعثر البرنامج على قاعدة البيانات وسوف يقوم باضافة واحدة جديدة", vbExclamation, "قاعدة بيانات غير موجودة"
'Here We will Create The Database
End If




يمكنك مراجعة اسلوب انشاء قاعدة بيانات من خلال سلسلة دروس تعليم الاكسيس في القسم الخاص بقواعد البيانات .


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




كود :
If Dir(Folder & "db1.mdb") = "" Then
MsgBox "لم يعثر البرنامج على قاعدة البيانات الرجاء مراسلة المبرمج للحصول على نسخة جديدة من قاعدة البيانات", vbExclamation, "قاعدة بيانات غير موجودة"
End
End If




بعد ذلك سوف نربط D1 بقاعدة البيانات بالشكل التالي :





كود :
Set D1 = DBEngine.Workspaces(0).OpenDatabase(Folder & "Db1.mdb")






ولكن لأن لدينا PassWord فسوف نحتاج إلى تمرير بارميترات اضافية منها pwd والذي سوف يحتوي على كلمة المرور :





كود :
Set D1 = DBEngine.Workspaces(0).OpenDatabase(Folder & "Db1.mdb", False, False, ";pwd=VB4ARAB")






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





كود :
Set D1 = DBEngine.Workspaces(0).OpenDatabase(Folder & "Db1.mdb", False, False, ";pwd=" & PassWord)






ومن ثم نربط T1,T2,T3 بالجداول الموجودة في D1 وذلك بالشكل التالي :




كود :
Set T1 = D1.OpenRecordset("Tb_Product", dbOpenTable)
Set T2 = D1.OpenRecordset("Tb_Category", dbOpenTable)
Set T3 = D1.OpenRecordset("Tb_Factory", dbOpenTable)



================================
كما ذكرنا سابقاً يمكن الاعتماد على جمل الاستعلام أو فتح قاعدة البيانات حين الحاجة إليها فقط .
*** كما أننا سوف نستخدم الداول الخاصة بـ

Dao مثل AddNew ، Delete ، وغير ذلك . كما يمكننا الاستفادة أيضاً من جمل لغة الاستعلامات التي تعلمناها سابقاً وهو ما سوف نفعله معAdo في دروة تطوير المواقع باستخدام Asp إن شاء الله . وبنفس الطريقة يمكن عمل ذلك مع الفيجوال بيسك .

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


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


Frm_About.Show


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


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


الملفات المرفقة
.zip   prog1.zip (الحجم : 177.15 ك ب / التحميلات : 193)
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 11,108 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 3,978 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 4,063 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... RaggiTech 2 4,951 15-10-12, 09:05 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 3,822 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 3,602 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 5,292 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport RaggiTech 2 6,105 15-10-12, 08:45 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 4,347 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 3,766 15-10-12, 08:37 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم