الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برمجة Dao من خلال فيجوال بيسك (2/4)

مغلق
بدأه Black Man في 4 مايو 2007 · 2 رد · 465 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم اقدم لكم اليوم تكملة للدرس الماضي

بسم الله الرحمن الرحيم .

المقدمة :

في الدرس السابق تعلمنا طرق انشاء وربط قاعدة البيانات .

وسوف نستمر بإذن الله خلال هذا الدرس في اكمال التعامل مع قواعد البيانات Access من خلال DAO

الدرس :

بعد ان قمنا بربط قاعدة البيانات في الدرس السابق ، وصلنا إلى السطر Form1.Show والذي سوف يظهر الفورم الأول باطلاق الحدث Event المسمى ب Load وأحداث أخرى . إلا أن الحدث Load هو انسب الأحداث لكتابة اسطر أوامرنا بالنسبة لهذا التطبيق .

في هذا الحدث سوف نقوم بـ :

* ربط الجدول الأول بقاعدة البيانات .

* التأكد من عدد السجلات الموجودة ، فإذا كان هناك سجلات فإننا سنطلب الإجراء ShowData ، وإلا فإننا سوف نطلب الاجراء ShowNoData :

Private Sub Form_Load()

Set T1 = D1.OpenRecordset("tb", dbOpenTable)

If T1.RecordCount < 1 Then

Call shownodata

Else

Call showdata

End If

End Sub

والآن سوف نقوم بكتابة اسطر كل من حدثي ، ShowData ، و ShowNoData ، فكل ما في الإجراء Sub الأول هو قراءة القيم الحالية للسجلات ووضعها في أماكنها بالشكل التالي :

Private Sub showdata()

Text1.Text = T1!nu

Text2.Text = T1!Fn

Text3.Text = T1!Te

End Sub

فيما سيضع الإجراء الثاني قيم فارغة "" في الأماكن الخاصة بالعرض .

Private Sub shownodata()

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

End Sub

أوامر التنقل بين السجلات .

تشترك جميع هذه الأوامر الأربعة في صيغة عامة ، فأولاً التأكد من وجود سجلات ، ومن ثم التأكد من أنني لست في حالة تعديل أو اضافة وذلك من خلال معرفة حالة زر أمر ( حفظ ) ومن ثم التأكد من أنني لست في البداية ( لأمر السابق ) وأنني لست في النهاية ( لأمر التالي ) ، ومن ثم تنفيذ الأمر ( MoveNext , MoveLast , MovePrevious , MoveFirst ) وأخيراً استدعاء ShowData .

وهذه هي الأوامر للاجراءات الأربعة :

Private Sub Command1_Click()

If T1.RecordCount < 1 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.MoveFirst

Command7.Enabled = False

Command8.Enabled = False

Call showdata

End Sub

Private Sub Command2_Click()

If T1.RecordCount < 1 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.MovePrevious

If T1.BOF Then T1.MoveFirst

Command7.Enabled = False

Command8.Enabled = False

Call showdata

End Sub

Private Sub Command3_Click()

If T1.RecordCount < 1 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.MoveNext

If T1.EOF Then T1.MoveLast

Command7.Enabled = False

Command8.Enabled = False

Call showdata

End Sub

Private Sub Command4_Click()

If T1.RecordCount < 1 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.MoveLast

Command7.Enabled = False

Command8.Enabled = False

Call showdata

End Sub

أوامر الإنشاء ، والتعديل ، وحفظ معلومات السجلات ، أو انهاء عملية التعديل والاضافة بلا حفظ .

سوف نقوم في أمر انشاء سجل جديد بالتأكد أولاً أننا لسنا في حالة اضافة أو تعديل ، ومن ثم نقوم باستخدام أمر Addnew لفتح قاعدة البيانات للاستقبال ، ومن ثم تمكين كل من زري ( حفظ - انهاء بلا حفظ ) ومن ثم افراغ الخانات للمستخدم لادخال البيانات المطلوبة :

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.AddNew

Command7.Enabled = True

Command8.Enabled = True

Call shownodata

وبالنسبة لأمر التعديل فسوف يزيد نقطة واحدة فقط ، وهي التأكد من وجود سجلات أصلاً لتعديلها ، وأننا لن نقوم بافراغ مربعات النص TextBoxes ، مع مراعاة استخدام الأمر Edit بدلاً من AddNew :

If T1.RecordCount < 1 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

T1.Edit

Command7.Enabled = True

Command8.Enabled = True

في الحفظ ، سوف نستخدم الأمر Update لتحديث التغييرات سواء كانت بالاضافة والتعديل ، مع الغاء تمكين Enabled لزري الحفظ - انهاء بلا حفظ .

وأما في انهاء بلا حفظ فسوف نستخدم الأمر CancelUpdate .

هناك اختلاف آخر وهو أننا نستخدم الدالة Val مع القيم الرقمية للتأكد من أن المستخدم قام بادخال أرقام وليس حروف مثلاً .

وهذه هي أوامر هذين الاجراءين :

Private Sub Command7_Click()

T1.CancelUpdate

Call showdata

Command7.Enabled = False

Command8.Enabled = False

End Sub

Private Sub Command8_Click()

T1!nu = Val(Text1.Text)

T1!Fn = Text2.Text

T1!Te = Val(Text3.Text)

T1.Update

Command7.Enabled = False

Command8.Enabled = False

End Sub

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

نقطة أخرى ، وهو أن الغالب أن باقي الأزرار تتعطل Enabled = False ما عدا زري الحفظ حتى تنتهي عملية الاضافة .

عرض عدد السجلات .

نستخدم لهذا الغرض الدالة RecordCount والتي تعود بعدد السجلات الحالية .

وذلك بالشكل التالي :

nom = T1.RecordCount

MsgBox "عدد السجلات الحالي هو : " & nom, vbInformation, "مثال"

الحذف :

كما هي العادة سوف نتأكد أولاً بأننا لسنا في وضع اضافة أو تعديل ، وذلك بعد التأكد من وجود سجلات أصلاً .

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

Private Sub Command9_Click()

If T1.RecordCount = 0 Then Exit Sub

If Command8.Enabled = True Then

s = MsgBox("أنت الآن في حالة اضافة أو تعديل ، هل تريد الغاءها ؟", vbYesNo + 524288 + 1048576, "مثال")

End If

If s = vbNo Then Exit Sub

Dim ase

aas = 1 + 16 + 256

ase = MsgBox("هل تريد بالتأكيد حذف السجل الحالي ؟؟؟", aas + 524288 + 1048576, "مثال")

If ase = vbNo Then Exit Sub

T1.Delete

If T1.RecordCount <> 0 Then

T1.MoveNext

If T1.EOF Then T1.MoveLast

Call showdata

Else

Call shownodata

End If

End Sub

#2

<_< مشكور اخي وبارك الله فيك بس والنبي ربنا يخليك عشان خاطرنا كلنا يا ريت تكمل تعبك وتنسق الكود بمحرر الاكوادوهتلقية في شريط ادوات التحرير باخر ايقونة جنب ايقونة اقتباس اقف علي الايقونة وهتلاقي ايقونة اسمها كود اكتب كودك ونشطه بالماوس وقم بالضغط علي ايقونة كود في شريط ادوات التحرير للرد علي المواضيع ..........

والله الموفق

#3

أخي الكريم لا تشتتنا بكثرة المواضيع وتعددها مع أنها تحوي نفس الفكرة

أكتب جميع الدروس في موضوع واحد

موضوعك هنا

و السلام عليكم

ألا بذكر الله تطمئن القلوب

هذا الموضوع مغلق.

مواضيع مشابهة