15-10-12, 07:58 AM
كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .
السلام عليكم ورحمة الله وبركاته .
الحذف .
في هذا الدرس سوف نتعلم كيفية القيام بعملية الحذف ، والتي نستخدم لها الوظيفة Delete .
في البداية لا بد أن نتأكد من أن ثم معلومات في قاعدة البيانات وإلا فإننا لن نقوم بأي شيء ، وقبل ذلك لا بد من التأكد من نيته في الحذف عن طريق اظهار رسالة تحذيريه :
والآن نريد أن نصل إلى السجل المحدد ، وهو الذي يظهر رقمه في Text7.Text ، لاحظ على سبيل المثال الأمر التالي :
والآن فإننا سوف نتنقل من خلالها حتى العثور على السجل المطلوب :
في البداية لا بد أن نتأكد من أن ثم معلومات في قاعدة البيانات وإلا فإننا لن نقوم بأي شيء ، وقبل ذلك لا بد من التأكد من نيته في الحذف عن طريق اظهار رسالة تحذيريه :
كود :
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ولكن هذه الطريقة تصبح أقل فاعلية في حالة كون عدد السجلات كبيراً . من الأفضل دائماً استخدام جمل لغة الاستعلامات الهيكلية لحذف السجل في جملة بهذا الشكل مثلاً :
كود :
SQL = "delete * from Tb_Product where number=" & Text7.Textوالآن سنقوم بحذف السجل الذي عثرنا عليه :
وأخيراً نقوم بتحديث المحتويات مرة أخرى .
تبقى أمر صغير ذو بال في عملية الحذف ، وهو أننا نختبر المصنع أو النوع الخاص بالعنصر المحذوف ، فإذا كان هذا المصنع محذوفاً View=False فإننا سنحذف ذلك المصنع ، ولقد شرحنا هذه النقطة في بداية الدروس .
الاحتفاظ بقيم هذين الحقلين في متغيرين :
الانتقال إليها في T2 و T3
كود :
T4.Deleteكود :
Refresh_Meالاحتفاظ بقيم هذين الحقلين في متغيرين :
كود :
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كود :
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يتبع ...