السلام عليكم ورحمة الله وبركاته .. وبعد ،،
اخواني الأفاضل بين أيديكم قاعدة بيانات ، وسأقوم بسرد المشكلة التي واجتهني والتي قمت بحل جزء منها أما الجزء الآخر فقد حاولات مراراً حلها ولكني لم أستطع ، واعذروني إن أطلت ففي الموضوع ما يستحق الإطالة ..
يوجد في القاعدة المرفقة نموذج بإسم (frmImportCarArabic) وبداخله مربع تحرير وسرد بإسم (رقم الرحلة Voyage) عند حدث بعد التحديث يوجد الكود التالي :
Dim Max As Integer
Dim Count As Integer
Max = DMax("[BillOFLading]", "ImportCars", "[VoyageNo] = '" & Forms!frmImportCarArabic![Voyage] & "'")
Count = DCount("[BillOFLading]", "ImportCars", "[VoyageNo] = '" & Forms!frmImportCarArabic![Voyage] & "'")
If Max > Count Then
DoCmd.OpenQuery "Update"
Else
Max = Max + 1
End Ifوسأوجز طريقة عمل هذا الكود والمراد منه :
في البداية أقوم بحساب أعلى قيمة لحقل (BillOFLading) في الجدول (ImportCars) ومن ثم أقوم بحساب عدد السجلات في نفس الجدول ، فإذا كانت أعلى قيمة أكبر من عدد السجلات فيتم تنفيذ إستعلام تحديث المسمى (Update الذي هو أساس المشكلة) وإلا يتم حساب أعلى قيمة ويضاف إليها (1) والكود أعلاه يتم تنفيذه بطريقة سليمة وليست هناك أي مشكلة .
وتتمثل المشكلة في إستعلام التحديث (Update) وسأضرب مثالاً حتى تتضح الصورة فمثلاً قمت بإدخال عدد (5) سجلات حسب الآتي :
السجل الأول : قيمة الحقل BillOFLading تساوي (1)
السجل الثاني: قيمة الحقل BillOFLading تساوي (2)
السجل الثالث: قيمة الحقل BillOFLading تساوي (3)
السجل الرابع: قيمة الحقل BillOFLading تساوي (4)
السجل الخامس: قيمة الحقل BillOFLading تساوي (5)
فلو تم حذف السجل الرابع مثلاً ، فستكون النتيجة أن تكون قيم حقل BillOFLading في الجدول حسب الترتيب التالي : (1) (2) (3) (5) (حذف السجل الرابع)
ولو قمت بإضافة سجل جديد بعد عملية الحذف ، فستكون قيمة الحقل BillOFLading تساوي (5) ما يعني أن هناك تكرار في قيمة الحقل ، ولذلك قمت بعمل استعلام التحديث المسمى (Update) ليقوم بإنقاص القيمة (1) لجميع السجلات ما عدا الذي يبدأ بالرقم (1) وستكون النتيجة حسب المثال أعلاه حسب الآتي :
السجل الأول : قيمة الحقل BillOFLading تساوي (1) (حسب الشرط في استعلام التحديث).
السجل الثاني: قيمة الحقل BillOFLading تساوي (1)
السجل الثالث: قيمة الحقل BillOFLading تساوي (2)
السجل الرابع: ( تم حذفه)
السجل الخامس: قيمة الحقل BillOFLading تساوي (4)
وبملاحظة بسيطة في السجلات سيتضح أن هناك رقمين مكرريين الا وهما في السجل الأول والسجل الثاني ...
والمطلوب هو جعل الاستعلام يقوم بإنقاص القيمة (1) من جميع السجلات بشرط أن لا تكون قيمة الحقل تساوي (1) وبطريقة أدق أن يقوم بإعادة تسلسل قيم الحقل BillOFLading
وفق الله الجميع لما فيه الخير ،،
