مشروع قاعدة بيانات التليفونات
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
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 التعليقات:
شرح رائع جدا تسلم يداك , بس يا رات يكون فى مزيد من شروحات البرامج
إرسال تعليق
ما هو رايكم فى المدونة ؟ او يتم الاقتراح لاضافة اشياء اخرى ؟