برامج

برمجة Dao من خلال فيجوال بيسك (1/4) [الأرشيف] - برامج نت

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : برمجة Dao من خلال فيجوال بيسك (1/4)


mido_kholy
10-11-2006, 01:59 PM
بسم الله الرحمن الرحيم .

المقدمة :
هناك العديد من طرق التعامل مع قواعد البيانات ، ففيما تتربع التقنية الحديثة 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 T1 As Recordset
Public T2 As Recordset

Public folder As String

[/شفرة]

* المتغيرات Public هي أحد أنواع الوصول للمتغيرات حيث يتم مشاهدة المتغيرات على مستوى المشروع .

المتغير الأول خاص بقاعدة البيانات ، بينما متغيرات خاصان بالجداول ، وأخيراً متغير نصي String نخزن فيه مسار البرنامج الحالي .
والآن سوف نقوم ببرمجة الاجراء main ، وسوف يحتوي على المهام التالي مرتبة :
* معرفة مسار البرنامج .
* إذا لم تكن قاعدة البيانات موجودة فإنه يقوم باستدعاء اجراء انشاء قاعدة بيانات جديدة .
* بعد وجود قاعدة البيانات الجديدة أو الموجودة اصلاً ، القيام بازالة خاصية القراءة فقط من على الملف .
* الاتصال بقاعدة البيانات .
* اظهار الفورم الرئيسي للبرنامج .
وهذا هو الكود ، وبين كل مهمة ومهمة أخرى هناك سطر .

[شفرة]

Private Sub main()
folder = App.Path
If Right(folder, 1) <> "\" Then folder = folder & "\"

If Dir(folder & "mm.mdb") = "" Then
CreateMyDatabase folder & "mm.mdb"
End If

SetAttr folder & "mm.mdb", vbNormal

Set D1 = DBEngine.Workspaces(0).OpenDatabase(folder & "mm.mdb")

Form1.Show
End Sub

[/شفرة]

والآن سوف نقوم ببرمجة الاجراء الذي يقوم بعمل قاعدة البيانات في حالة عدم وجودها ، وهو مقسم على قسمين .
- انشاء ملف قاعدة البيانات .
- بعد انشاء الملف ، انشاء الجداول والحقول داخلها .

سنسمي المهمة الأولى CreateMyDatabase وسوف تقوم بالخطوات التالية مرتبة :
* تعريف متغير خاص لقاعدة البيانات .
* انشاء قاعدة البيانات - لاحظ تشابه الطريقة مع طريقة فتح قاعدة البيانات .
* اغلاق قاعدة البيانات .
* استدعاء الاجراء الثاني - انشاء الجداول والحقول داخلها - .
* افراغ المتغيرات Varibles حتى لا تحجز مكاناً من الذاكرة .

مجدداً هذا هو الكود :

[شفرة]

Sub CreateMyDatabase(DB_Name As String)
Dim dbsNew As Database

Set dbsNew = DBEngine.Workspaces(0).CreateDatabase(DB_Name, dbLangGeneral, dbEncrypt)

dbsNew.Close

CreateMyTableS DB_Name


Set dbsNew = Nothing
Set wrkDefault = Nothing
End Sub

[/شفرة]

المهمة الأخيرة في هذا الدرس ، هي انشاء الجداول داخل قاعدة البيانات ، وسوف تمر بالخطوات التالية .
* تعريف TableDef لانشاء جدول من خلاله . وكذلك متغير من نوع ملف قاعدة بيانات .
* فتح قاعدة البيانات التي انشأناها للتو .
* تعريف TableDef على أنه منشأ للجداول داخل قاعدة البيانات ( ربطه بقاعدة البيانات ) .
* البدء في اضافة الحقول .
* اتمام عملية اضافة الجدول .

وهذا هو الكود :

[شفرة]
Sub CreateMyTableS(DBName)
Dim dbsMyData As Database
Dim tdfNew1 As TableDef

Set dbsMyData = OpenDatabase(DBName)

With dbsMyData
Set tdfNew1 = dbsMyData.CreateTableDef("TB")

With tdfNew1
.Fields.Append .CreateField("nu", dbInteger)
.Fields.Append .CreateField("fn", dbText)
.Fields.Append .CreateField("te", dbDouble)
End With

dbsMyData.TableDefs.Append tdfNew1
End With
End Sub

[/شفرة]

خاتمة :
في هذا الدرس تعرفنا سوية على كيفية عمل كائن Dao ، وكيفية انشاء قاعدة بيانات من خلاله وقت التنفيذ .
في الدرس القادم سوف نبدأ في التعامل مع قاعدة البيانات بإذن الله .

* في الدرس الأخير سوف يكون ملف مرفق على جميع العمليات خلال الدروس بإذن الله

veto_44
10-11-2006, 04:59 PM
بارك الله فيك اخي ميدو على هذا الدرس وننتظر
منك بقية الدروس الثلاثة لكن ما هي طريقة العرض
التي ستتبعها هل ستكتب باقي الدروس بهذا الموضوع
ام ستكتب كل درس بموضوع منفرد انتظر ردك
ولك خالص التقدير والاحترام .

mido_kholy
10-11-2006, 07:06 PM
الدورة دى الدروس متصلة
والباقى عن قريب انشاء الله

mido_kholy
10-12-2006, 01:40 PM
مش مهم الردود المهم الاستفادة من الدروس

boubekeur
10-12-2006, 05:32 PM
مشكور أخي ميدو على الدرسالله يبارك فيك