تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثاني عشر - تصميم شاشة عرض البضائع - الحذف والتعديل
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .


الحذف .


في هذا الدرس سوف نتعلم كيفية القيام بعملية الحذف ، والتي نستخدم لها الوظيفة Delete .
في البداية لا بد أن نتأكد من أن ثم معلومات في قاعدة البيانات وإلا فإننا لن نقوم بأي شيء ، وقبل ذلك لا بد من التأكد من نيته في الحذف عن طريق اظهار رسالة تحذيريه :



كود :
Dim sure
sure = MsgBox("هل أنت متأكد أنك تريد القيام بحذف هذه البضاعة ؟", vbExclamation + vbYesNo + arabic, "حذف بضاعة")
If sure = vbNo Then Exit Sub
والآن نريد أن نصل إلى السجل المحدد ، وهو الذي يظهر رقمه في Text7.Text ، لاحظ على سبيل المثال الأمر التالي :



كود :
If T1.RecordCount = 0 Then
MsgBox "لا توجد أي بضاعة !", vbExclamation + arabic, "حذف بضاعة"
Exit Sub
End If
والآن فإننا سوف نتنقل من خلالها حتى العثور على السجل المطلوب :


كود :
T1.MoveFirst
For i = 0 To T1.RecordCount - 1
If T1!Number = Text7.Text Then Exit For
T1.MoveNext
Next i
ولكن هذه الطريقة تصبح أقل فاعلية في حالة كون عدد السجلات كبيراً . من الأفضل دائماً استخدام جمل لغة الاستعلامات الهيكلية لحذف السجل في جملة بهذا الشكل مثلاً :

كود :
SQL = "delete * from Tb_Product where number=" & Text7.Text
المشكلة أن الداو Dao لا تدعم أياً من جمل الإستعلام ما عدا جملة Select - حسبما أعلم - . ولهذا سوف اضطر - مرغماً - على استخدام حلول بديلة أكثر جهداً وأقل فاعلية .


والآن سنقوم بحذف السجل الذي عثرنا عليه :


كود :
T4.Delete
وأخيراً نقوم بتحديث المحتويات مرة أخرى .


كود :
Refresh_Me
تبقى أمر صغير ذو بال في عملية الحذف ، وهو أننا نختبر المصنع أو النوع الخاص بالعنصر المحذوف ، فإذا كان هذا المصنع محذوفاً View=False فإننا سنحذف ذلك المصنع ، ولقد شرحنا هذه النقطة في بداية الدروس .

الاحتفاظ بقيم هذين الحقلين في متغيرين :


كود :
A1 = T1!Category
A2 = T1!Factory

الانتقال إليها في T2 و T3


كود :
T2.MoveFirst
For i = 0 To T2.RecordCount - 1
If T2!Number = A1 Then Exit For
T2.MoveNext
Next i

T3.MoveFirst
For i = 0 To T3.RecordCount - 1
If T3!Number = A2 Then Exit For
T3.MoveNext
Next i
التأكد من أن View <> False وإلا فإننا نحذفها لو كانت قد فرغت .


كود :
If T2!View = False Then
SQL = "select count(*) as mycount from tb_product where category=" & A1 & ""
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
If T4!mycount = 0 Then T2.Delete
T4.Close
End If

If T3!View = False Then
SQL = "select count(*) as mycount from tb_product where factory=" & A2 & ""
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
If T4!mycount = 0 Then T3.Delete
T4.Close
End If
سؤال : أيضاً بالامكان عمل جملة استعلام واحدة بدل كل ما سبق من الأكواد ، هل تستطيع القيام بتكوينها !!!


وبهذا يصبح الكود الكامل لعملية الحذف :

كود :
Dim sure
sure = MsgBox("هل أنت متأكد أنك تريد القيام بحذف هذه البضاعة ؟", vbExclamation + vbYesNo + arabic, "حذف بضاعة")
If sure = vbNo Then Exit Sub

If T1.RecordCount = 0 Then
MsgBox "لا توجد أي بضاعة !", vbExclamation + arabic, "حذف بضاعة"
Exit Sub
End If

T1.MoveFirst
For i = 0 To T1.RecordCount - 1
If T1!Number = Text7.Text Then Exit For
T1.MoveNext
Next i
Dim A1, A2
A1 = T1!Category
A2 = T1!Factory
T1.Delete

T2.MoveFirst
For i = 0 To T2.RecordCount - 1
If T2!Number = A1 Then Exit For
T2.MoveNext
Next i

T3.MoveFirst
For i = 0 To T3.RecordCount - 1
If T3!Number = A2 Then Exit For
T3.MoveNext
Next i

If T2!View = False Then
SQL = "select count(*) as mycount from tb_product where category=" & A1 & ""
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
If T4!mycount = 0 Then T2.Delete
T4.Close
End If

If T3!View = False Then
SQL = "select count(*) as mycount from tb_product where factory=" & A2 & ""
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
If T4!mycount = 0 Then T3.Delete
T4.Close
End If

Refresh_Me

يتبع ...
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس الثاني عشر - تصميم شاشة عرض البضائع - الحذف والتعديل - بواسطة Raggi Tech - 15-10-12, 07:58 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 13,820 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 4,308 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 4,341 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... RaggiTech 2 5,309 15-10-12, 09:05 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 4,192 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 3,884 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 5,769 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport RaggiTech 2 6,607 15-10-12, 08:45 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 4,736 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 4,040 15-10-12, 08:37 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: