كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
في هذا الدرس سوف نقوم بإذن الله بمعرفة بعض خصائص هذه الأداة قبل أن نتطرق إلى معرفة كيفية الاضافة ، التعديل والحذف .
قبل أن نبدأ ... جرب نقل الملف من مكانه الحالي إلى مكان آخر ... ستلاحظ ظهور رسالة خطأ .
هذه الرسالة تفيد بإنه لا يستطيع العثور على مكان قاعدة البيانات .
Couldnt find file C:\mydocument\db1.mdb
والسبب أننا حددنا له مساراً معينا ليجد فيه قاعدة البيانات ، وقد تغير هذا المسار كلياً .
من أجل ذلك سوف نستخدم كائن يسمى App وخاصية Path والتي تعطينا المسار الحالي للبرنامج .
سوف نقوم الآن بمسح خاصية DatabaseName لأننا سوف نقوم بضبطها أثناء التشغيل اعتماداً على مسار البرنامج .
في حدث Form_Load سوف نقوم بضبط هذه الخاصية بالشكل التالي :
في هذا الدرس سوف نقوم بإذن الله بمعرفة بعض خصائص هذه الأداة قبل أن نتطرق إلى معرفة كيفية الاضافة ، التعديل والحذف .
قبل أن نبدأ ... جرب نقل الملف من مكانه الحالي إلى مكان آخر ... ستلاحظ ظهور رسالة خطأ .
هذه الرسالة تفيد بإنه لا يستطيع العثور على مكان قاعدة البيانات .
Couldnt find file C:\mydocument\db1.mdb
والسبب أننا حددنا له مساراً معينا ليجد فيه قاعدة البيانات ، وقد تغير هذا المسار كلياً .
من أجل ذلك سوف نستخدم كائن يسمى App وخاصية Path والتي تعطينا المسار الحالي للبرنامج .
سوف نقوم الآن بمسح خاصية DatabaseName لأننا سوف نقوم بضبطها أثناء التشغيل اعتماداً على مسار البرنامج .
في حدث Form_Load سوف نقوم بضبط هذه الخاصية بالشكل التالي :
Data1.DatabaseName = App.path & "/db1.mdb
"
خاصية
RecordCount :
تعطينا هذه الخاصية عدد السجلات الموجود في قاعدة البيانات - كما ذكرنا في الدرس السابق - .
جرب أمراً بهذا الشكل :
MsgBox Data1.Recordset.RecordCount
خاصية
ReadOnly :
تأخذ هذه الخاصية افتراضياً قيمة False وتحدد هذه الخاصية فيما إذا كنا نريد فتح قاعدة البيانات للقراءة فقط أم لا .
فمثلاً أمر بالشكل التالي سيجعل قاعدة البيانات للقراءة فقط - غير قابل للتعديل ، الاضافة ، الحذف - .
Data1.ReadOnly = True
خاصية
Fields :
تعطينا هذه الخاصية قيمة حقل معين في المكان الحالي .
فمثلاً الأمر التالي سوف يعطينا قيمة الاسم في الحقل الحالي :
MsgBox Data1.Recordset.Fields("fname
")
والآن سوف نعرف اجراءُ جديداً Sub ونطلق عليه State -
إذا لم تكن تعرف كيف تعرف الإجراء وما هي فائدته فانصحك بالاستمرار بقراءة الكتاب الذي اضيف رابطه في الدرس الأول ، لكن هذا موجز حول الاجراء :
خاصية
RecordCount :
تعطينا هذه الخاصية عدد السجلات الموجود في قاعدة البيانات - كما ذكرنا في الدرس السابق - .
جرب أمراً بهذا الشكل :
MsgBox Data1.Recordset.RecordCount
خاصية
ReadOnly :
تأخذ هذه الخاصية افتراضياً قيمة False وتحدد هذه الخاصية فيما إذا كنا نريد فتح قاعدة البيانات للقراءة فقط أم لا .
فمثلاً أمر بالشكل التالي سيجعل قاعدة البيانات للقراءة فقط - غير قابل للتعديل ، الاضافة ، الحذف - .
Data1.ReadOnly = True
خاصية
Fields :
تعطينا هذه الخاصية قيمة حقل معين في المكان الحالي .
فمثلاً الأمر التالي سوف يعطينا قيمة الاسم في الحقل الحالي :
MsgBox Data1.Recordset.Fields("fname
")
والآن سوف نعرف اجراءُ جديداً Sub ونطلق عليه State -
إذا لم تكن تعرف كيف تعرف الإجراء وما هي فائدته فانصحك بالاستمرار بقراءة الكتاب الذي اضيف رابطه في الدرس الأول ، لكن هذا موجز حول الاجراء :
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
[b]الإجراءات .[/b]
لنفترض أن لدينا برنامج يحتوي على ثلاثة أزرار تقوم بعرض قائمة المواقع ، الرسائل ، اسم مبرمج البرنامج ، ولكن قبل كل منها يتم رسم المربع الذي يتم عرض النص فيه ، ولنفرض ان الرسم يتم بالكود التالي :
code line 1
code line 2
code line 3
code line 4
لنفترض أن لدينا برنامج يحتوي على ثلاثة أزرار تقوم بعرض قائمة المواقع ، الرسائل ، اسم مبرمج البرنامج ، ولكن قبل كل منها يتم رسم المربع الذي يتم عرض النص فيه ، ولنفرض ان الرسم يتم بالكود التالي :
code line 1
code line 2
code line 3
code line 4
بهذا يصبح أمر الزر الأول :
code line 1
code line 2
code line 3
code line 4
code for Show Site List
والثاني :
code line 1
code line 2
code line 3
code line 4
code for Show Message List
وهكذا الثالث ...
لكن لو عرفنا اجراءً وسميناه
Drow بالشكل التالي :
Private Sub Drow
()
code line 1
code line 2
code line 3
code line 4
End Sub
فبهذا يمكن أن يكون أمر الزر الأول
Drow
code for Show Site List
والثاني :
Drow
code for Show Message List
هذه إحدى فوائد الاجراءات ، وتسمى
Sub أو Procedure ، هناك نوع شبيه آخر وهو Function ويختلف عنه في أنه يعود بقيمة ، وفي بعض لغات البرمجة لا يتواجد القسم الأول بصورة مستقلة بل تكون جميعها عبارة عن Function ولكن مع اختلاف نوعية البيانات التي يمكن اعادتها أو عدم اعادة بيانات أصلاً ، لمزيد من التوسع يمكنك مراجعة الكتاب الخاص بالأستاذ تركي العسيري .
code line 1
code line 2
code line 3
code line 4
code for Show Site List
والثاني :
code line 1
code line 2
code line 3
code line 4
code for Show Message List
وهكذا الثالث ...
لكن لو عرفنا اجراءً وسميناه
Drow بالشكل التالي :
Private Sub Drow
()
code line 1
code line 2
code line 3
code line 4
End Sub
فبهذا يمكن أن يكون أمر الزر الأول
Drow
code for Show Site List
والثاني :
Drow
code for Show Message List
هذه إحدى فوائد الاجراءات ، وتسمى
Sub أو Procedure ، هناك نوع شبيه آخر وهو Function ويختلف عنه في أنه يعود بقيمة ، وفي بعض لغات البرمجة لا يتواجد القسم الأول بصورة مستقلة بل تكون جميعها عبارة عن Function ولكن مع اختلاف نوعية البيانات التي يمكن اعادتها أو عدم اعادة بيانات أصلاً ، لمزيد من التوسع يمكنك مراجعة الكتاب الخاص بالأستاذ تركي العسيري .
[/TD]
[/TR]
[/TABLE]
والآن عودة إلى البرنامج مرة أخرى .
ولنحلل هذا الاجراء سوية قبل أن نبدأ في كتابته .
الهدف : يقوم بعرض المكان الحالي من قاعدة البيانات في رأس الفورم
Form1.Caption .
الإنطلاق : من المنطقي أن ينطلق ( يحدث ) هذا الحدث عند بداية البرنامج وعند أي تغير في السجلات باستخدام أحد أزرار التنقل .
إذن سوف نقوم بكتابة الحدث ، وسيكون بالشكل التالي :
Sub State
()
Dim a, b
a = Data1.Recordset.RecordCount
b = Data1.Recordset.Fields("number
")
Form1.Caption = "Record " & b & " Of " & a
End Sub
وسوف نستدعيه مع كل عملية تنقل ، فمثلاً يصبح الانتقال للتالي :
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then Data1.Recordset.MoveLast
State
يتبع ...
ولنحلل هذا الاجراء سوية قبل أن نبدأ في كتابته .
الهدف : يقوم بعرض المكان الحالي من قاعدة البيانات في رأس الفورم
Form1.Caption .
الإنطلاق : من المنطقي أن ينطلق ( يحدث ) هذا الحدث عند بداية البرنامج وعند أي تغير في السجلات باستخدام أحد أزرار التنقل .
إذن سوف نقوم بكتابة الحدث ، وسيكون بالشكل التالي :
Sub State
()
Dim a, b
a = Data1.Recordset.RecordCount
b = Data1.Recordset.Fields("number
")
Form1.Caption = "Record " & b & " Of " & a
End Sub
وسوف نستدعيه مع كل عملية تنقل ، فمثلاً يصبح الانتقال للتالي :
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then Data1.Recordset.MoveLast
State
يتبع ...