تابعنا :

الأربعاء، 23 نوفمبر 2011

قواعد البيانات




مشروع قاعدة بيانات التليفونات

4-1 انشاء نموذج المشروع


سنقوم بإنشاء مشروع جديد باسم PrjDataBase وتسمية النموذج FrmDatabase ثم نقوم بإدراج أداة تحكم البيانات Data Control الى النموذج قم بتسميتها  datal ، ثم تضيف أربعة صناديق نص Text Boxes حيث سيتم عرض بيان كل حقل فى صندوق نص وكذلك سنضيف أربع عناوين Labels على أن يظهر النموذج كما هو بالشكل




شكل (4-26) النموذج وقت التصميم



قم بضبط الخصائص المعروفة لديك كما بالجدول التالى :       



القيمة
الخاصية
الكائن
FrmDataBases
Name
Form
قاعدة بيانات التليفونات
Captain

True
Right to left

TextSno
Name
TextBox

Text

TxtName
Name
TextBox

Text

TxtAddress
Name
TextBox

Text

TxtPhoneNo
Name
TextBox

Text

LblSno
Name
Label
مسلسل
Captain

LblName
Name
Label
الإسم
Captain

LblAddress
Name
Label
العنوان
Captain

LblPhoneNo
Name
Label
التليفون
Captain


جدول خصائص النموذج  FrmDataBases

وسنتناول الآن كيفية ربط أداة البيانات وصناديق النصوص بقاعدة البيانات والجدول والحقول




4-2 ربط أداة التحكم بأحد جداول قاعدة البيانات Access

تتم عملية الربط بين أداة البيانات Data Personal وملف قاعدة البيانات من خلال الخصائص التالية الخاصة بأداة البيانات Data Personal :

- خاصية Connect لتحديد نوع قاعدة البيانات التى سيتم التوصل بها لهذا يتم الضبط على Access .

-  خاصية DatabaseName لتحديد اسم ملف قاعدة البيانات متضمن المسار الذى يوجد به الملف. (ملف Personal 97 السابق إنشائه) .

-   خاصية RecordSource وهى تحدد اسم الجدول أو الإستعلام الذى سيتم الإرتباط به .

4-3 ربط صناديق النص بحقول الجدول

ويتم ربط صناديق النص ببيانات الحقول عن طريق تحديد الخصائص التالية الخاصة بصناديق النص :

-   خاصية Data Source لتحديد اسم أداة التحكم المرتبط بها صندوق النص .

-  خاصية Data Field وهى تحدد اسم الحقل (أحد حقول الجدول) الذى سيتم الإرتباط به.


4-4 التنفيذ العملى
1- فى نافذة التصميم الخاصة بالنموذج نختار أداة البيانات DataPersonal ونقف على نافذة الخصائص :

-   تأكد من أن خاصية Connect مضبوطة على Access وإلا غيرها الى Access .

- نغير خاصية اسم قاعدة البيانات DataBaseName الى قاعدة بياناتنا Personal97.dbf ويمكن الوصول اليها من المستعرض Browse.(القاعدة اللى انشاناها بانفسنا للبرنامج اللى هنعملة دلوقتى)

-   نغير خاصية RecordSource الى اسم الجدول TblPersonal

2-   لكل صندوق من صناديق النص المطلوب ربطها بالحقول يتم تحديد خاصية DataSource وخاصية DataField كما يأتى :

-    نختار صندوق النص الخاص بالمسلسل TxtSno ثم نتوجه للخصائص ونغير خاصية Data Source الى Data Personal (أداة البيانات المرتبطة بها)

-    نغير الخاصية Data Field الى اسم الحقل SerNo.

-   ثم نتوجه الى صندوق TxtName ونغير الخاصية Data Source الى Data Personal أيضا .

- نغير خاصية Data Field الى Name .وهكذا لباقى صناديق النص المرتبطة بحقول جدول TblPersonal طبقا للجدول الذى يحدد باقى خصائص عناصر النموذج لهذا فهو يعتبر استكمال لجدول.

-   بهذه الخطوة نكون ربطنا أدوات التحكم الخاصة بالنموذج بحقول جدول قاعدة البيانات .



القيمة
الخاصية
الكائن
Data Personal
Name
Data Control
Data 1
Captain

Personal
Database Name

Friends
Record Source

2- Add New
EOF Action

TxtSno
Name
TextBox
DataPersonal
Data Source

SerNo
Data Field


Text

TxtName
Name
TextBox
DataPersonal
Data Source

Name
Data Field

TxtAddress
Name
TextBox
DataPersonal
Data Source

Address
Data Field

TxtPhoneNo.
Name
TextBox
DataPersonal
Data Source

PhoneNo.
Data Field

 

إستكمال خصائص النموذج  FrmDataBase


4-5 تشغيل البرنامج

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



نموذج قاعدة البيانات أثناء التشغيل

تتم الحركة بين السجلات بالأسهم المزود بها أداة البيانات كالتالى السهم الأيمن للحركة للسجل التالى والسهم الأيسر للحركة للسجل السابق هذا إذا كانت خاصية Right To Left لأداة التحكم هى القيمة False . وتنعكس الأسهم (الأيمن للسجل السابق ، والأيسر للسجل التالى) إذا كانت خاصية Right To Left تم تغييرها الى True

وكما نعرف من قبل فى هذه الحالة يتم تغيير الخاصية الى True لجميع عناصر التحكم التى يتم إضافتها للنموذج بعد ذلك . ويستخدم السهمين الآخرين بالأداه للحركة للسجل الأول والسجل الأخير



4-6 إضافة سجل جديد

  فى حالة الوصول للسجل الأخير وعند نقر سهم الحركة للسجل التالى يختلف تصرف الأداه تبعا لقيمة الخاصية EOFAction كما يلى :

-  القيمة 0- Move Last       للتوجه للسجل الأخير

-  القيمة  1- EOF       للتوجه لنهاية الجدول

-  القيمة 2-  Add New      لإضافة سجل جديد . يتم إضافة سجل جديد خالى من البيانات.

وقد تم إختيار القيمة  Add New  كما هو محدد فى جدول الخصائص بهدف إتاحة الفرصه لإضافة سجلات جديدة للتجول .

وتتم إضافة السجل الجديد إذا تم إدخال بيان فى أحد حقوله وإلا لا يعتد به .

 لاحظ لايمكن حذف أى سجل من خلال الأداة مباشرة.

4-7 تحسين البرنامج

لاحظ أن أداة التحكم لا تمكنا من حذف السجلات كما لا تبين رقم السجل ولا عدد السجلات لهذا تم إضافة بعض التحسينات فى النموذج السابق بإضافة أزرار تحكم تساعد على إنجاز بعض المهام المطلوبة كالتوجه للسجل الأول / الأخير / التالى / السابق وكذلك لإضافة سجل أو تعديل محتوى سجل أو لحذف سجل و كذلك إظهار بيان على النموذج يبين عدد السجلات وترتيب السجل الحالى .

 ومن عيوب الربط المباشر لعناصر تحكم بحقول البيانات صعوبة إجراء تحقق من صحة نوعية البيانات المدخلة (مثل التأكد من أن المسلسل رقم أو أن التليفون أيضا رقم) . وهذا العيب يؤدى الى ظهور خطأ أثناء التشغيل وينهى البرنامج . ولعلاج هذا العيب يلزمنا تصيد الأخطاء قبل ظهور إشارة الخطأ وعرض إشارة خطأ مناسبة من خلال البرنامج وبهذا نضمن عدم إنهاء البرنامج .

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



القيمة
الخاصية
الكائن
Data Personal
Name
Data Control
قاعدة بيانات التليفونات
Caption

CmdAdd
Name
Command Button
إضافة
Captain

CmdEdit
Name
Command Button
تعديل
Captain

CmdSave
Name
Command Button
حفظ
Captain

CmdFirst
Name
Command Button
الأول
Captain

CmdNext
Name
Command Button
التالى
Captain

CmdPrev
Name
Command Button
السابق
Captain

CmdLast
Name
Command Button
الأخير
Captain

CmdDel
Name
Command Button
حذف
Captain

CmdExit
Name
Command Button
إنهاء
Captain

LblPointer
Name
Label

Captain



إستكمال خصائص أدوات النموذج


بتشغيل البرنامج والحركة على السجلات بأزرار التالى والسابق وغيرها تظهر البيانات داخل النموذج كما بالشكل التالى

النموذج وقت التنفيذ


4-8 خصائص ووسائل مرتبطة بأداة التحكم Data Control

من الخصائص الهامة التى تساعد على التحكم فى تصرف     أداة قاعدة البيانات الخاصية RecordSet وهى خاصية تعود بكائن يعبر عن مجموعة السجلات ويمكن من خلال هذه الخاصية (الكائن) الوصول لبعض خصائص السجلات كعددهم أو رقم السجل الحالى فعلى سبيل المثال :

لمعرفة عدد السجلات المرتبطة بالأداه DataPersonal نستخدم الخاصية RecordCount ولعرضها داخل LblPointer نكتب الأمر كالتالى :

LblPointer.captain=DataPersonal.RecordsSet.RecordCount

لاحظ أن الخاصية RecordCount تعود بعدد السجلات الخاصة بالكائن RecordSet .

لعرض ترتيب السجل الحالى نتستخدم الخاصية AbsolutePosition ولعرضها داخل LblPointer نكتب الأمر كالتالى :

LblPointer.captain=DataPersonal.RecordSet.AbsolutePosition+1

لاحظ أن الخاصية AbsolutePosition تعود بترتيب السجل الحالى مطروح منه 1 على إعتبار أن السجل الأول ترتيبه صفر .

ونفس الكلام عندما نريد أن ننفذ أحد العمليات بالحذف والإضافه والتوجه لسجل حيث توجد عدة وسائل هامة مرتبطة بالكائن RecordSet فمثلاً :

 للتوجه للسجل الأول نستخدم الوسيلة MoveFirst :

DataPersonal.Recordset.MoveFirst

للتوجه للسجل الأخير نستخدم الوسيلة MoveLast :

DataPersonal.Recordset.MoveLast

للتوجه للسجل التالى نستخدم الوسيلة MoveNext :

DataPersonal.Recordset.MoveNext

للتوجه للسجل السابق نستخدم الوسيلة MovePrevious :

DataPersonal.Recordset.MovePrevious

للحذف نستخدم الوسيلة Delete :

DataPersonal.Recordset.Delete

للإضافه نستخدم الوسيلة Addnew :

DataPersonal.Recordset.Addnew

للتعديل نستخدم الوسيلة Edit :

DataPersonal.Recordset.Edit

لإضافة تعديلات للسجلات بالجدول وكذلك الإضافه نستخدم الوسيلة Update :

DataPersonal.Recordset.Update



4-9 ملاحظات على شفرة البرنامج

-    سيتم عرض النموذج بعد وضع حماية على صناديق النصوص (المسلسل ، الإسم ، العنوان، التليفون) وذلك بتغيير قيمة خاصية Lock للقيمة True مع تغيير قيمة خاصية Enabled الى False زر أمر حفظ التعديل والإضافة سيتم هذا من خلال الإجراء LockRec .

-   عند النقر على زر التعديل أو الإضافة سيتم رفع الحماية عن صناديق النصوص الأربعة بإعادة خاصية Lock الى القيمة False من خلا شفرة أجراء UnlockRec .

-    سيتم مع أى حركة على السجلات طباعة رقم السجل الحالى / عدد السجلات داخل أداة العنوان LblPointer .

-  سيتم عرض رقم السجل الحالى / بعدد السجلات من خلال شفرة الإجراء SetPointer.

-   سيتم مع إجراء Form_Initialize تنفيذ إجراء LockRec وإجراء SetPointer . والحدث Initialize مرتبط بالنموذج ويحدث مع بدء تنفيذ تجهيز النموذج للعرض .

-   حيث أن إضافة السجل أو التعديل يتم مباشرة فور الإنتقال الى أى سجل يتم تنفيذ إجراء CmdSave فى الإجراءات الأربعة الخاصة للحركة بين السجلات فى حالة أن يكون خاصية Enabled لزر CmdSave قيمتها True من خلال هذه الشفرة .



                   If CmdSave.Enabled=True Then

                           CmdSave_Click

End If

-   يستخدم الإجراء CmdAdd لإضافة سجل والإجراء CmdEdit للبدء فى إجراء التعديل على أن يتم تنفيذ إجراء الحفظ بعد ذلك بالنقر على زر الحفظ CmdSave أو أحد أزرار الحركة .

-    تم وضع شفرة خاصة بتصيد الأخطاء فى شفرة الحفظ تعرض إشارة خطأ عند إدخال بيانات بالحقول لاتتفق مع نوع البيانات المطلوبة أو عند تكرار قيمة المسلسل حيث أن حقل المسلسل مفتاح أساسى .

-   تم إضافة شفرات لعرض رسائل تحذير عند إجراء عملية الحذف للتحذير من الحذف وللتأكيد على إتمام عملية الحذف أو التراجع عنها .


4-10 الشفرة الكاملة للمشروع


Private Sub UnLockRec()

TxtSno.Locked=False

TxtName.Lockecd=False

TxtAddress.Locked=False

TxtPhoneNo.Locked=False 

CmdSave.Enabled=True

End Sub



Private Sub LockRec()

TxtSno.Locked=True

TxtName.Locked=True

TxtPhoneNo.Locked=True

CmdSave.Enabled=False

End Sub

Private Sub SetPointer()


RecNo = DataPersonal.Recordset.AbolutePosition + 1

RecCount = DataPersonal.Recordset.RecordCount

LbIPointer.Caption = Str(RecNo) & "/"&Str(RecCount)

End Sub



Private Sub Form_initialize()

DataPsrsonal.Recordset. MoveLast

DataPersoal.Recordeset. MoveFirst

SetPointer

LockRec

End Sub



Private Sub CmdEdit_Click()

 DataPersonal.Recordest.Edit

 UnLockRec

End Sub



Private Sub CmdADD_Click()

DataPersonal.Recodsed.AddNew

UnLockRec

End Sub   



Private Sub CmdSave_Click()

On Error GoTo Errdb

Data Personal .Recordset . Update

Set pointer

Lock Rec

Cmd Save. Enabled = False

Count:

On Error GoTo 0

Exit Sub

Errdb:

Prompt = ”خطأ فى عملية الادخال اما لتكرار المسلسل أو لعدم موافقة نوع البيانات

Title = ”اشارة خطأ

Button = VbOKOnly +VbQuestion + VbSystemModal

MsgBox Prompt, Button, Title

Data Personal.Recordset.CancelUpdate

CmdSave.Enabled=False

Resume Next

End Sub



Private Sub CmdFirst_Click()

If CmdSave.Enabled=True Then    

CmdSave_Click    

End If

DataPersonal.Recordset.MoveFirstSetPointer

LockRec

End Sub



Private Sub Cmdfirst – Click ()

If CmdSave.Enabed = True Then

CmdSave – Click

End If

Data Personal.Recordset.MoveFirst

Set Pointer

Lock Rec

End Sub

Private Sub CmdNext – Click ()

If CmdSava . Enabled = True Then

CmdSava – Click

End If

Rec No = Data Personal . Recordset. Absoute Position + 1

RecCount = Data Personal. Recrdset . Record Count

If Rec No < RecCount  Then

Data Personal . Recordset . Move Next

SetPointer

Lockrec

End If

End Sub



Private Sub CmdPrev_Click()

If CmdSave.Enabled=True Then

CmdSave_Click

End If

RecNo = DataPresonial.RecordSet.AbsolutePosition+1

If RecNo > 1 Then

DataPersonal . ReccordSet.MviePrevious

SetPointer

LockRec

End If

End Sub



Private Sub Cmdlast_Click()

If CmdSave.Enabled = True Then

CmdSave_Click

End If

Datapersonal.Recordset.MoveLast

SetPointer

End Sub



Private sub CmdExit_Click()

End

End Sub



Private Sub CmdDel_Click()    

Prompt = ”انت على وشك حذف سجل هل تريد الحذف بالفعل؟

Title = ”اشارة تحذير

Button = VbYesNo + VbDefaulButton2 + VbCritical

Button = Button + VbMsgBoxRight + vbSystemModal

x = MsgBox (Prompt , Button, Title)

If  x =VbYes Then

DataPersonal.Recordset. Del

Prompt = ”تم الحذف بالفعل

Title = ”معلومة

Button  = VbOKOnly +VbInformation + VbMsgBoxRight

MsgBoxPrompt, Botton, Title

DataPersonal.Recordset.MoveFirst

SetPointer

Else

Prompt = ”تم الغاء عملية الحذف

Title = “معلومة

Button = VbOkOnly +  VbInformation+VbMsgBoxRight

MsgBoxPrompt, Bottun, Title

End If

End sub

وبهذا نكون قد انتهينا من برنامج قاعدة بيانات التليفونات

1 التعليقات:

إرسال تعليق

ما هو رايكم فى المدونة ؟ او يتم الاقتراح لاضافة اشياء اخرى ؟

Related Posts Plugin for WordPress, Blogger...